Как получить данные из агрегатного запроса mongoose в nodejs - PullRequest
0 голосов
/ 04 февраля 2019

Запрос мангуста выбирает правильные результаты, но я не могу получить доступ к данным.

Я хочу получить текущий максимальный идентификатор в базе данных, увеличить значение на 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 } ].Что я хочу сделать, это получить идентификатор, т.е. 5, как мне это сделать?Спасибо.

1 Ответ

0 голосов
/ 04 февраля 2019

Совокупный результат запроса является массивом, и вы должны использовать нулевой индекс, чтобы получить первый элемент, который является объектом, содержащим ваш результат.Попробуйте это:

console.log(books[0].id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...