0

get request 这里只是返回一个空数组。我不知道为什么。我已经看到其他看起来完全相同的代码工作得很好。

我试过用谷歌搜索这个问题,但没有看到相关的答案。我正在使用 Postman 来测试它。


const getPantry = async (req, res) => {
    const results = await pantry.find({});
    return send(res, 200, results)
}


module.exports = cors(
    router(
        get('/pantry', getPantry),
    )
)

我期待一个 json 对象,但它只是返回空数组。

4

1 回答 1

0

根据您的示例,我可以获得的最短的快速和肮脏的完整工作代码是这样的:

const { send } = require('micro')
const { router, get } = require('microrouter')
const { MongoClient } = require('mongodb')

var pantry = null

MongoClient.connect('mongodb://localhost')
  .then(conn => {
    pantry = conn.db('test').collection('pantry')
  })

const getPantry = async (req, res) => {
  const results = await pantry.find({}).toArray();
  send(res, 200, results)
}

module.exports = router(get('/pantry', getPantry))

使用调用端点curl

$ curl 'http://localhost:3000/pantry'
[{"_id":0},{"_id":1},{"_id":2}]

哪个正确显示了集合的内容。

我相信您的代码中缺少的是toArray()方法。find()它本身会返回一个游标,除非您对它进行一些操作,否则它不会输出查询结果,例如使用它调用toArray()或迭代它forEach()

于 2019-05-09T00:47:27.470 回答