获取Mongoose

时间:2017-02-07 05:52:12

标签: mongodb mongoose

我有一个循环来通过Mongoose执行多个查询

"use strict";

var Mongoose = require("mongoose");
var User     = Mongoose.model("User");
var Cache    = {};

for (var index=0; index<usernames.length; index++) {
    var query = {
        username:usernames[index]
    };

    User.find(query).
    exec(function(error,users){
        //THIS IS A CALLBACK FUNCTION,
        //HOW TO GET THE 'query' VARIABLE ABOVE?
        //I WANT TO PUT THE RESULT INTO CACHE:
        var username    = users[0].username;
        Cache[username] = users[0];
    });
}

我需要知道上面的回调函数中哪个查询的结果。 它用于数据库查询缓存目的。我可以提取用户名&#39;来自&#39;用户[0]&#39;,但当数组&#39;用户&#39;是空的,没有这样的事情。

1 个答案:

答案 0 :(得分:1)

将匿名函数放入循环中;如果您只对第一位用户感兴趣或.findOne()值是唯一的,请使用.find()代替username

  for (var index = 0; index < usernames.length; index++) {
    (function () {
        var query = {
            username: usernames[index]
        };

        User.findOne(query).
            exec(function (error, user) {
                //use your query here
                var username = user.username;
                Cache[username] = user;
            });
    })()
}

但请考虑async进行此类操作。