gpt4 book ai didi

javascript - mongodb返回Cursor,我循环并将对象添加到数组中,如何在没有第三方库的情况下将数组发送到客户端?

转载 作者:行者123 更新时间:2023-12-01 04:00:27 24 4
gpt4 key购买 nike

这是我到目前为止所做的:

router.get('/', function(req, res, next) {

mongo.connect('mongodb://localhost:27017/interview_prac', function(err, db) {
var item = []
if (err)
throw err;
else {
var nettuts = db.collection('nettuts')
var p1 = new Promise(function(resolve, reject) {
nettuts.find({gender: 'm'}, function(err, data) {
if (err)
throw err
if (data) {
data.forEach(function(myDoc) {
item.push(myDoc)
})
}
});
});
p1.then(
res.render('index', {data: item})
).catch(function(reason) {
console.log(reason)
});
}

})
});

我想将item发送到客户端,但是,它在myDoc添加到item之前发送。我正在使用 promise ,页面确实呈现。然而项目中什么也没有。当我将 data:item 替换为 data:'hello' 时,hello 确实出现在客户端。

最佳答案

Node 6+ 有 Promises,并且 MongoDB 2.2 客户端返回 native Promise,因此您不应该需要任何第三方库(尽管我会推荐 Bluebird)

let db = null

app.get('/', function(req, res, next) {
let items = []
mongo.connect('mongodb://localhost:27017/nettuts')
.then(db => {
let nettuts = db.collection('nettuts')
return nettuts.find({gender: 'm'}).toArray()
})
.then(data => {
if (data) data.forEach(myDoc => items.push(myDoc));
console.log(data)
res.render('index', {data: items})
db.close()
})
.catch(err => next(err))
})

一些注意事项

  • 在测试之外您不会执行连接、设置集合和断开每个请求的操作
  • items.push 在这里是多余的,因为您已经有了 data 数组,但我再次假设您正在测试东西。

关于javascript - mongodb返回Cursor,我循环并将对象添加到数组中,如何在没有第三方库的情况下将数组发送到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42236581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com