Javascript Mongoose和nodejs具有无回调的存储库模式
我试图用javascript创建一个存储库类/函数,但由于回调,我无法从函数返回值: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
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的一些有效点