有没有mongodb for nodejs 的插件在查询的时候可以返回查询结果?

有没有mongodb for nodejs 的插件在查询的时候可以返回查询结果?

目前找了几个nodejs的插件,mongoose,mongous等等,都是在查询方法里面使用回调函数来返回查询结果,但是我的node脚本需要把查询结果return出来,而不只是单纯的给console.log用啊。各位亲们有解决办法么?

例如:

index.prototype.a = function{ var vars = {}; vars.something1 = {}; vars.something2 = 123; mongous"db.test".find{name:shura},functionr{ ifr{ vars.something3= true; }else{ vars.something3= false; } }; return vars; }

我怎么才能在返回中存在vars.something3这个数据?

P.S.
我用到mongo主要是为了快速查询某个数据是否存在,然后根据返回来给定一个对象的一个或多个变量的值,然后整个代码返回这个对象。而并非根据返回做一些mongous外面获取不到的处理。因为我需要写的这个代码是给别的程序调用的一个数据处理对象,我需要返回一个处理过的数据对象。

今天在NPM里面闲逛,还真发现了同步返回的一个插件mongo-sync,分享出来。

下面是它的example:

var Server = require"mongo-sync".Server;
var server = new Server127.0.0.1;
var result = server.db"test".getCollection"posts".find.toArray;
console.logresult;
server.close;

还是再次感谢各位的解答

首先有一个前提没有确定,不知道你需要把结果返回出来之后用在哪儿以及怎么用?这将影响你如何写代码。

那么我假设你是这样的情况,你有一个函数,这个函数需要使用异步请求的结果(我写比较通用的例子,不受限在 MongoDB 之下),一个可行的办法是这样的:

// 这是你的函数
var myFunc = function passedValue, callback { // 执行异步请求 somethingAsync{ with: passedValue}, function result { callbackresult; };
}; myFunc"something I want to pass in async", function result { // 这里,我可以对 result 做任何我想做的事,比如说: var obj = JSON.parseresult; // 这就相当于你拿到了返回值。
};

P.S. 请忽略我对问题的评论,当时没看清是异步回调。


我看了你的补充,这里可以看出你对异步请求还不是很熟悉。你对 arr 的赋值其实是成功,但是仅限于异步请求的回调函数之内,而外层的 console.logarr 肯定不会是你期望的结果就是因为这句代码里的 arr 还没有被赋值(异步回调实际上是在 console.log 之后发生的)。

这里真正的问题是你究竟要如何使用 arr,按照你的意图,arr 的使用是一定依赖于对于 mongo 的请求的,因此对于 arr 的后续逻辑也一定要在异步回调运行之后才能生效。我猜测你的困惑在于你不想在异步回调里写太多代码,因为可能不好组织。但是这个解决办法有很多,我建议你学习一下 Promises。

在这里,我用简单的方式帮你整理一下。


function doSomethingarray { // 假设这里是你的业务逻辑 array.forEachfunction value, index { console.logvalue, index; console.dirvalue; // ...更多你可能需要做的 }; } // 这里是业务逻辑真正开始运行的地方 mongous"db.test".find{}, doSomething;

意思是:你不必使用一个全局(相对地)对象来保存你向数据库请求的结果,而是直接编写你的业务逻辑,然后把这些业务逻辑根据需要作为对数据库的请求回调来执行即可。

如果你觉得还是不够用,那么请提供更完整的例子我们再分析。

如果硬要实现可以使用step或者async库,但你的思维方式没有转变到node.js的异步思维。建议还是参考 @nightire 的答案

发表评论

电子邮件地址不会被公开。 必填项已用*标注