得到空数组,别无其他

时间:2019-05-02 15:27:55

标签: javascript node.js mongodb api micro

在这里获取请求只是返回一个空数组。我不知道为什么。我看过其他代码,看起来完全一样的工作也很好。

我已经尝试过搜索该问题,但没有找到相关的答案。我正在使用Postman进行测试。

next_page = response.xpath('//a[contains(@class,"ficon-caret-right")]/@href').extract()

        if len(next_page) !=0:
            next_href = next_page[0]
            next_page_url = next_href
            print "==============> next cat pagination url :", next_page_url
            yield scrapy.Request(next_page_url, callback=self.parse)

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

1 个答案:

答案 0 :(得分: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()本身returns a cursor,除非您对它执行某些操作,例如调用toArray()或使用forEach()

进行迭代,否则它将不会输出查询结果。