如何从此函数返回变量

时间:2017-04-21 08:52:18

标签: javascript mongodb

我想将变量test更新为我查询的数据库集合的结果。

var test;

db.collection('locale').find().toArray(function(err,results){
    console.log(results);
});

3 个答案:

答案 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的第一个案例是更好的方式,而且更具可读性。