如何从Node.js中的猫鼬聚合查询中获取数据

时间:2019-02-04 10:32:56

标签: node.js express mongoose

猫鼬查询正在获取正确的结果,但我无法访问数据。

我想获取数据库中的当前最大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,我该怎么做?谢谢。

1 个答案:

答案 0 :(得分:1)

汇总查询结果是一个数组,您必须使用零索引来获取第一个元素,该元素是包含您的结果的对象。试试这个:

console.log(books[0].id)