(…)。然后在节点(expressJS)中不是函数
我正在使用promises的hope.js库。 问题是有时它返回以下错误: (...).then is not a function
。 我不知道为什么,我不得不做很多修补。
工作的方法的代码看起来像那些没有,唯一的区别是在这种情况下,我正在使用其他库: async.js 。
我的代码如下:
控制器:
userstoryservice.deleteTaskByIdRemovedUS(userstoryexists).then(function (error, arraysresult) { if (error) response.status(error.code).json({message: error.message}); else response.status(200).json({message: 'deleted successfully}); });
我的服务:
exports.deleteTaskByIdRemovedUS = function deleteTaskByIdRemovedUS(userstoryexists){ var promise = new Hope.Promise(); var Task = mongoose.model('Task'); var obj = {}; obj.arrTasksIdsRemoved = []; obj.arrTasksIdsRemovedErrors = [];` async.each(userstoryexists.tasks, function (item, callback){ var query = { _id: item.id}; Task.deleteTaskById (item.id).then (function(error) { if (error) { obj.arrTasksIdsRemovedErrors.push(item.id); } else { obj.arrTasksIdsRemoved.push(item.id); } callback(); //required }); }, function(err){ if(err){ console.log('Error:' + err); return promise.done(err, null); } else{ return promise.done(null,obj); } }); } else{ return promise.done(null,obj); } return promise; };
任何想法?
非常感谢你。
我find了答案 ,说明为什么会发生这种情况。
问题是mongoose会回报自己的承诺,而不是ES6 promise
,这会导致冲突。
还有图书馆的老板回答了我,并告诉我相同的,如何解决它: 链接 。
谢谢大家的关注。