将变量设置为Mongoose Find的结果

mao*_*ao3 5 javascript mongoose mongodb node.js

我正在尝试做这样的事情

    function retrieveUser(uname) {
      var user = User.find({uname: uname}, function(err, users) {
        if(err)
          console.log(err);
          return null;
        else
          return users[0];
      return user;
Run Code Online (Sandbox Code Playgroud)

但是这会返回文档而不是用户对象.参数users是一个与查询匹配的用户对象数组,那么如何将其中一个对象存储到我的函数可以返回的变量中?

hex*_*ide 18

该函数User.find()是一个异步函数,因此您不能使用返回值来获取结果值.相反,使用回调:

function retrieveUser(uname, callback) {
  User.find({uname: uname}, function(err, users) {
    if (err) {
      callback(err, null);
    } else {
      callback(null, users[0]);
    }
  });
};
Run Code Online (Sandbox Code Playgroud)

然后将使用此函数:

retrieveUser(uname, function(err, user) {
  if (err) {
    console.log(err);
  }

  // do something with user
});
Run Code Online (Sandbox Code Playgroud)