从 nodejs 的 mongodb 调用返回值
Return value from a mongodb call from nodejs
如何从mongojs查询返回数组。我使用 nodejs 执行了以下查询,进入本地运行的 mongodb 数据库。Mongojs正在处理这笔交易。我的问题是;如何从下面的函数调用返回数组。
var databaseUrl = "users";
var collections = ["users","reports"];
var db = require('mongojs').connect(databaseUrl, collections );
function usernameFromId(callback){
db.users.find({}, function(err, result) {
if(err || !result) console.log("Error");
else{
callback(result);
}
});
};
var x = usernameFromId(function(user){
return user;
});
console.log(x);
这里 x 是未定义的,我如何创建一个返回值,使 x 将是一个数组,我可以在其中通过 x.name、x.email 等访问元素。
这是数据库中保存的内容。
{ "_id" : ObjectId("4fb934a75e189ff2422855be"), "name" : "john",
"password":"abcdefg", "email" : "john@example.com" }
{ "_id" : ObjectId("4fb934bf5e189ff2422855bf"), "name" : "james",
"password" :"123456", "email" : "james@example.com" }
不能
有效地return
异步函数。您必须在回调中使用结果:
usernameFromId(function(user){
console.log(user);
});
这是由于异步编程的性质:">立即退出,设置一个回调函数,以便在将来的某个时候调用。这意味着:
var x = usernameFromId(...);
在实际调用回调之前,对其进行整体评估(包括将x
设置为 usernameFromId
返回的 undefined
值(:
function (user) {
return user;
}
而且,至少在 ECMAScript 5 的当前标准下,你无法绕过这个问题。由于 JavaScript 是单线程的,任何等待回调的尝试都只会锁定单个线程,使回调和return user
在事件队列中永远挂起。
相关文章:
- 如何记录调用另一个函数的函数的返回值
- 单击按钮时,使用Javascript调用并返回值
- 从JSP页面调用Java Script函数未返回值
- jQuery 延迟的 AJAX 调用返回值
- 未使用返回值时调用方法
- 如何在循环中调用Promise函数并保存其返回值
- AngularJS如何从异步调用返回值
- angularjs从html调用函数返回值
- jQuery deferred:用于延迟函数的返回,直到函数内的异步调用完成+获取返回值
- PHP调用脚本函数,返回值为Uncaught SyntaxError:意外的令牌ILLEGAL
- 从 nodejs 的 mongodb 调用返回值
- ajax调用返回值,但变量为null
- 从ajax调用返回值到javascript
- 如何让此 JSONP 调用返回值
- 使用jquery将ajax调用返回值分配给var
- 如何使函数在返回true或false之前等待ajax调用返回值?
- 与从同步ajax调用返回值混淆
- JSP向ajax调用返回值
- jQuery.getJSON()错误:浏览器链接:调用返回值回调失败:类型错误:无法读取属性'文件'为n
- 浏览器链接:无法调用返回值回调:TypeError:无法读取属性'文件'为null