我想将变量test更新为我查询的数据库集合的结果。
var test;
db.collection('locale').find().toArray(function(err,results){
console.log(results);
});
答案 0 :(得分:0)
您只需将results
值从函数回调设置为test
变量即可。然后,您可以迭代结果数组以获取值。
var test;
db.collection('locale').find().toArray(function(err,results){
if(err)
console.log(err);
else {
console.log(results);
test = results;
for(var i = 0; i < results.length; i++) {
//process the results
}
}
});
答案 1 :(得分:0)
这不是最好的方法..如果你想以json的形式返回响应,你必须在回调函数中添加send()
或render()
。
您正在尝试解决异步功能。为什么呢?
我认为你正在使用nodejs。对?你想做一些同步查询。使用此Mongo Sync
var Server = require("mongo-sync").Server;
var server = new Server('127.0.0.1');
var result = server.db("testdb").getCollection("testCollection").find().toArray();
console.log(result);
答案 2 :(得分:0)
您有两种选择:
首先,您可以使用ES6 / 2015来获得更好的变量范围,因此您必须以这种方式编写代码:
let test;
db.collection('locale').find().toArray((err,results) => {
console.log(results);
// it Work
test = results
});
其次,您可以创建一个_this变量:
var _this = this;
var test;
db.collection('locale').find().toArray(function(err,results){
console.log(results);
// it Work too
_this.test = results;
});
在我看来,ES6的第一个案例是更好的方式,而且更具可读性。