在db.eval()中调用db.collection.find()

时间:2016-04-13 12:01:01

标签: javascript mongodb

我编写了一个javascript函数,它将在我的nodejs平台上的mongodb上的db.eval()内执行。

我的js功能是:

<div dx-select-box="vm.account1BoxConfig">
    <div data-options="dxTemplate:{ name:'accountItem' }">
        <span dx-text-box="{value: 'Mike'}"></span> // not working -- adds text-box to each value
            <span>{{::code}}</span>
            <small style="margin-left: 5px">[{{::name}}]</small>
    </div>
</div>

将其缩小为要传递给db.eval()

的字符串'code'
function(data){
    var d = {
        vehicle_id:data.vehicle_id,
        timestamp:{
            $gte:data.start_time,
            $lte:data.end_time
        }
    };
    var routeStatus = [];

    db.location.find(d,function(err,result){
            db.result.insert({result});
    });
 }

info对象包含函数调用的所有必填字段;

现在的主要问题是db.location.find()是一个异步调用,所以我怎么能得到它的结果返回到db.eval()的回调; ?

如果我只是从db.location.find()的回调中返回结果,那么我得不到任何返回,因为它是异步调用。

1 个答案:

答案 0 :(得分:0)

得到了答案,感谢@NeilLunn提供了一些小而有用的提示。 .toArray()工作

简单的做法

var docs = db.location.find().toArray();

为我工作。