Javascript 如何生成返回承诺的自定义函数?
我创建了一个在数据库中查找文档的函数。 这是一个自定义函数,我将把值传递给控制器中的参数。然后我想在后面使用.Then()。这是我的密码 自定义函数Javascript 如何生成返回承诺的自定义函数?,javascript,node.js,mongodb,promise,mongoose-schema,Javascript,Node.js,Mongodb,Promise,Mongoose Schema,我创建了一个在数据库中查找文档的函数。 这是一个自定义函数,我将把值传递给控制器中的参数。然后我想在后面使用.Then()。这是我的密码 自定义函数 getProjectsList(userId) { const query = { users: { $in: [userId] }, isDeleted: false }; Project.find(query); }, 在我的控制器里 projectsList(req, res) { projectModule.g
getProjectsList(userId) {
const query = { users: { $in: [userId] }, isDeleted: false };
Project.find(query);
},
在我的控制器里
projectsList(req, res) {
projectModule.getProjectsList(req.user.id)
.then(() => { // this is not recognized
// do something here
});
},
请帮忙。我试过这样的东西,但没用
getProjectsList(userId) {
return new Promise(() => {
const query = { users: { $in: [userId] }, isDeleted: false };
Project.find(query);
});
},
Project.find()方法必须返回回调或承诺。让我们假设它正在返回一个承诺,因此Project.find()的代码将是
现在,您需要创建一个新函数getProjectsList作为承诺,并将Project.find()放入其中
所以这可以写成
function getProjectsList(userId){
return new Promise(function(resolve,reject){
Project.find(query)
.then(function(result){
// success handling
resolve(result);
})
.catch(function(error){
//error handling
reject(error);
})
})
}
您可以使用回调函数。试试这个
projectsList(req, res) {
projectModule.getProjectsList(req.user.id, function(err, result){
if(err){
res.json({
"result" : "failure"
});
}
res.json({
"result" : "success"
});
});
};
在此处获取项目列表函数
getProjectsList(userId, callback) {
const query = { users: { $in: [userId] }, isDeleted: false };
Project.find(query, function(err, result){
if(err){
return callback(err);
}
callback(null, result);
});
};
Project.find是否返回承诺…?然后返回Project.find(查询)我是个白痴。我忘了在project.find之前放return。tsk2yes2。我想出来了。无论如何谢谢:)仅供参考:返回新承诺(()=>{
-返回一个永远无法解决的承诺:p-但是你缺少返回
是我愚蠢的问题。hahaThis促进了。但是当你想对响应执行一些业务逻辑并保持主代码流干净时,这个模式很有帮助@trincotI不会称之为干净。它被称为re的反模式从来没有一个好的理由像那样滥用诺言。
getProjectsList(userId, callback) {
const query = { users: { $in: [userId] }, isDeleted: false };
Project.find(query, function(err, result){
if(err){
return callback(err);
}
callback(null, result);
});
};