2017-08-28 1 views
0

Je travaille sur une API de bibliothèque de livres dans laquelle un utilisateur peut emprunter et mettre à jour.Comment puis-je interroger un ID particulier avec sequelize.js afin de pouvoir le mettre à jour?

C'est ma logique pour emprunter un livre:

BorrowBooks(req, res) { 
    Book.findOne({ 
     where: { 
     title: req.body.booktitle, 
     author: req.body.author, 
     } 
    }) 
    .then(book => { 
     if (!book) { 
     res.status(404).send({ 
      message: "Book not found!" 
     }) 
     } else { 
     return Borrower 
      .create({ 
      booktitle: req.body.booktitle, 
      borrowDate: Date.now(), 
      returnDate: null, 
      userId: req.params.userId, 
      }) 
      .then(borrower => { 
      res.status(200).send(borrower) 
      book.update({ 
       count: book.count - 1, 
      }); 
      }) 
      .catch((e) => { 
      return res.status(400).send(e) 
      }) 
     } 
    }); 
}, 

Pour retourner un livre que je donne les résultats suivants:

returnBooks(req, res) { 
    Book.findOne({ 
     where: { 
     title: req.body.title, 
     author: req.body.author, 
     } 
    }) 
    .then((book) => { 
     if (!book) { 
     return res.status(400).send({ 
      message: "There is no book like that!" 
     }) 
     } else { 
     book.update({ 
      count: book.count + 1, 
     }) 
     Borrower.findOne({ 
      where: { 
       id: req.params.userId, 
       booktitle: req.body.title, 
      } 
      }) 
      .then((returnedBook) => { 
      returnedBook.update({ 
       returnDate: Date.now() 
       }) 
       .then(() => res.status(200).send({ 
       message: "book successfully returned", 
       returnedBook 
       })) 
      }) 
     } 
    }) 
} 

Cela fonctionne bien (je pense) pour un livre, mais si un l'utilisateur emprunte 2 livres ou plus et j'essaie de les retourner, ça ne marche pas.

Comment cela peut-il fonctionner de sorte qu'il renverrait plus d'instance d'un livre emprunté. Comment peut-il remarquer le nouvel identifiant du nouveau livre emprunté?

Si j'essaie de retourner un deuxième livre, il renvoie l'erreur suivante?

Unhandled rejection TypeError: Cannot read property 'update' of null 
    at Borrower.findOne.then (C:\Users\okonjiemmanuel\Desktop\hellobooks\server\controllers\book.js:142:23) 
    at tryCatcher (C:\Users\okonjiemmanuel\Desktop\hellobooks\node_modules\bluebird\js\release\util.js:16:23) 
    at Promise._settlePromiseFromHandler (C:\Users\okonjiemmanuel\Desktop\hellobooks\node_modules\bluebird\js\release\promise. 
js:512: 
+0

S'il vous plaît, quelqu'un devrait m'aider – letmebe

Répondre