(…)。然后在节点(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 ,这会导致冲突。

还有图书馆的老板回答了我,并告诉我相同的,如何解决它: 链接 。

谢谢大家的关注。