Rya*_*yan 1 javascript mongodb node.js
我一般都是JS的新手,但我试图从MongoDB中查询一些数据.基本上,我的第一个查询检索具有指定会话ID的会话的信息.第二个查询对位于指定位置附近的文档执行简单的地理查询.
我正在使用mongodb-native javascript驱动程序.所有这些查询方法都在回调中返回结果,因此它们是非阻塞的.这是我烦恼的根源.我需要做的是检索第二个查询的结果,并创建一个包含所有返回文档的sessionIds数组.然后我将把它们传递给一个函数.但是,我无法生成此数组并在回调之外的任何位置使用它.
有谁知道如何正确地做到这一点?
db.collection('sessions', function(err, collection) {
collection.findOne({'sessionId': client.sessionId}, function(err, result) {
collection.find({'geolocation': {$near: [result.geolocation.latitude, result.geolocation.longitude]}}, function(err, cursor) {
cursor.toArray(function(err, item) {
console.log(item);
});
});
});
Run Code Online (Sandbox Code Playgroud)
函数是javascript上唯一"封闭"范围的东西.
这意味着内部回调函数中的变量项在外部作用域上不可访问.
您可以在外部作用域中定义一个变量,以便所有内部变量都可以看到它:
function getItems(callback) {
var items;
function doSomething() {
console.log(items);
callback(items);
}
db.collection('sessions', function(err, collection) {
collection.findOne({'sessionId': client.sessionId}, function(err, result) {
collection.find({'geolocation': {$near: [result.geolocation.latitude, result.geolocation.longitude]}}, function(err, cursor) {
cursor.toArray(function(err, docs) {
items = docs;
doSomething();
});
});
});
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7092 次 |
最近记录: |