猫鼬查询正在获取正确的结果,但我无法访问数据。
我想获取数据库中的当前最大id,将值增加1并将数据保存到数据库
// add a new book
router.route('/books/add').post(jsonParser, (req, res) => {
Book.aggregate([{ $group: { _id: "id", id: { $max: "$id" } } }], (err, books) => {
if (!books)
return next(new Error("Could not load book!"))
else {
let book = new Book(req.body);
// log the max id returned, currently returns undefined
console.log("Id found ", books.id);
book.id = books.id + 1;
console.log("BookId ", book.id);
res.status(200).json({ 'book': 'Added successfully!' });
// book.save().then(book => {
// res.status(200).json({ 'book': 'Added successfully!' });
// }).catch(err => {
// res.status(400).send('Failed to create new record.');
// });
}
});
});
console.log(books.id)
返回undefined
,而console.log(books)
确实向我显示了[ { _id: 'id', id: 5 } ]
的结果。我想做的就是获取ID,即5,我该怎么做?谢谢。
答案 0 :(得分:1)
汇总查询结果是一个数组,您必须使用零索引来获取第一个元素,该元素是包含您的结果的对象。试试这个:
console.log(books[0].id)