【发布时间】:2018-06-02 20:50:35
【问题描述】:
当我尝试在我的route 中访问controller 的功能时出错。我用猫鼬,快递。
错误:
TypeError:无法读取未定义的属性“then” 在 /private/var/www/html/sms/server/routes/user.routes.js:70:9 在 Layer.handle [as handle_request] (/private/var/www/html/sms/node_modules/express/lib/router/layer.js:95:5) 在下一个(/private/var/www/html/sms/node_modules/express/lib/router/route.js:137:13) 在 Route.dispatch (/private/var/www/html/sms/node_modules/express/lib/router/route.js:112:3) 在 Layer.handle [as handle_request] (/private/var/www/html/sms/node_modules/express/lib/router/layer.js:95:5) 在/private/var/www/html/sms/node_modules/express/lib/router/index.js:281:22 在 Function.process_params (/private/var/www/html/sms/node_modules/express/lib/router/index.js:335:12) 在下一个(/private/var/www/html/sms/node_modules/express/lib/router/index.js:275:10) 在 Function.handle (/private/var/www/html/sms/node_modules/express/lib/router/index.js:174:3) 在路由器(/private/var/www/html/sms/node_modules/express/lib/router/index.js:47:12) 在 Layer.handle [as handle_request] (/private/var/www/html/sms/node_modules/express/lib/router/layer.js:95:5) 在 trim_prefix (/private/var/www/html/sms/node_modules/express/lib/router/index.js:317:13) 在/private/var/www/html/sms/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/private/var/www/html/sms/node_modules/express/lib/router/index.js:335:12) 在下一个(/private/var/www/html/sms/node_modules/express/lib/router/index.js:275:10) 在 /private/var/www/html/sms/server.js:65:3 POST /api/user/create 500 27.274 ms - 16 (node:11300) UnhandledPromiseRejectionWarning: 未处理的承诺拒绝(拒绝 id:1):错误:此电子邮件是 已经存在。请输入另一个电子邮件。 (节点:11300)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。在 未来,未处理的承诺拒绝将终止 具有非零退出代码的 Node.js 进程。
这是我的代码:-
user.cont.js
function create(data) {
User.findOne({ email: data.email })
.exec((err, doc) => {
if (err) {
return new Promise((resolve, reject) => {
return reject(err);
})
} else {
if (doc) {
return new Promise((resolve, reject) => {
return reject(new Error('This email is already exists. Please enter another email.'));
})
} else {
const user = new User(data);
return user.save()
}
}
})
}
export default { getUsers, create };
user.route.js
router.post('/create', (req, res, next) => {
UserCtrl.create(req.body)
.then(savedUser => res.json(savedUser)) . // here error is generated
.catch(e => next(e));
});
【问题讨论】:
-
您的
create函数中缺少return。
标签: node.js express mongoose promise