我创建了一个在我的数据库中查找文档的函数。 这是一个自定义函数,我将在我的控制器中将值传递给它的参数。然后我想在之后使用.then()。这是我的代码。
自定义功能
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);
});
},
答案 0 :(得分:1)
Project.find()方法必须返回回调或promise。我们假设它返回一个promise,因此Project.find()的代码将是
Project.find(query)
.then(function(result){// success handling})
.catch(function(error){ //error handling })
现在你想创建一个新函数getProjectsList作为一个promise并将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);
})
})
}
答案 1 :(得分:-1)
你可以使用回调函数。试试这个
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);
});
};