Javascript Mongoose和nodejs具有无回调的存储库模式

Javascript Mongoose和nodejs具有无回调的存储库模式,javascript,node.js,mongodb,mongoose,repository-pattern,Javascript,Node.js,Mongodb,Mongoose,Repository Pattern,我试图用javascript创建一个存储库类/函数,但由于回调,我无法从函数返回值: this.getAll = function(collection) { var result; collection.find(function (err, objects) { if (err) return console.error(err); console.log(objects); var result

我试图用javascript创建一个存储库类/函数,但由于回调,我无法从函数返回值:

this.getAll = function(collection)
{
    var result;

 collection.find(function (err, objects) {
              if (err) return console.error(err);
              console.log(objects);
              var result = objects;
        });

     return result;
}

 var result = repo.getAll(Kitten);
 console.log(result);

但是这里的结果是先调用的,然后再调用回调。做我想做的事是个好主意吗?或者我应该直接将回调函数传递到存储库中吗

我使用回调。它认为这是NodeJS的特性。您还可以使用承诺而不是回调

您可以为存储库创建如下方法:

function getAll(collection, cb){
   collection.find(function (err, objects) {
      cb(err, objects);
   });
}

getAll(Kitten, function(err, objects){
   console.log(objects);
});

您应该学习如何使用回调。如果您不喜欢它创建的语法,您可以使用承诺。JavaScript和NodeJS中的回调是最基本的。但为了避免圣诞树效应,将代码重构为函数和方法。我还建议您看看异步模块,特别是async.series和async.parallel

您可以看一看,它突出了关于nodejs的一些有效点