我使用的是NodeJ,为什么我无法获取dataincollection变量的值这里我使用的是Nedb
router.get('/', (req, res) => {
var collection = [];
db.find({}, function (err, data) {
collection = data
});
res.render('../views/Client/index.ejs', { data: collection })
console.log(collection)
});
我还尝试var集合=null和var集合;但它仍然没有显示数据。我已经尝试了所有这些,但这些仍然有问题。Get node.js neDB data into a variable
2条答案
按热度按时间58wvjzkj1#
考虑一下
router.get()
函数的操作方式。目前,您同步编写了它。因此,它将执行db.find()
,然后立即运行res.render()
,而不等待回调函数传入db.find()
。因此,data
将是未定义的,您将不会得到预期的结果。你需要把它作为一个异步操作来运行,我个人倾向于使用
try/catch
,但是你也可以读取asynchronous JS here,这将允许db.find()
内部的回调函数完成它的数据返回。下面是一个示例(可能不是工作代码,可以将其视为伪代码):
这里,我们告诉函数在运行下一行
res.render()
之前等待db.find()
完成它的执行。同样,这是未经测试的伪代码,所以不要假设复制/粘贴它会起作用。花点时间学习异步函数。8zzbczxx2#
因为回调不是在
res.render(...)
之前触发的。它类似于异步操作。回调函数可以在数据库完成后工作以查找数据。您可以尝试在回调函数中使用res.render(...)