在这里获取请求只是返回一个空数组。我不知道为什么。我看过其他代码,看起来完全一样的工作也很好。
我已经尝试过搜索该问题,但没有找到相关的答案。我正在使用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对象,但它只是返回空数组。
答案 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()