如何从promise中检索mongodb查询结果?

时间:2018-02-18 12:06:12

标签: javascript node.js mongodb

我正在尝试在“/ read /:id”路由中检索db.collection查询的结果。找到用户后,将履行承诺并发送状态“成功”。但是,数据对象是空的。

查询:

const getDb = require('./connection').getDb,
    ObjectId = require('mongodb').ObjectId;

readUser: async function(data) {
    let o_id = new ObjectId(data);
    await getDb().collection('users').find({ _id: o_id })
    }

路线:

const express = require('express'),
router = express.Router(),
queries = require('../db/queries');

router.get('/read/:id', (req, res) => {
queries.readUser(req.params.id)
    .then((user) => {
        res.status(200).json({
            status: 'success',
            data: user
        })
    })
    .catch((err) => {
        res.status(500).json({
            status: 'error',
            data: err
        });
    });
})

res.json

{
    "status" : "success"
}

有人可以解释如何成功检索查询数据吗?

请找到项目代码here

谢谢。

1 个答案:

答案 0 :(得分:0)

好吧,我找到了解决方案。

readUser: async function(data) {
            let o_id = new ObjectId(data),
                cursor = getDb().collection('users').find({ _id: o_id });
            return await cursor.next() // returns document result of collection.find() method
        }