我正在创建简单的注册表单节点js与mongoDB当我插入记录到数据库记录不添加到数据库中。在插入记录时,我得到了以下错误。我已经创建了基于MVC架构的应用程序。
[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "false".] {
code: 'ERR_UNHANDLED_REJECTION'
到目前为止,我把我所尝试的附在下面。
路由器
router.route('/user/create').post(userController.createUserControllerFn);
userController.js
var userService = require('./userServices');
var createUserControllerFn = async (req, res) =>
{
console.log(req.body);
var status = await userService.createUserDBService(req.body);
console.log("*************************");
console.log(status);
console.log("*************************");
if (status) {
res.send({ "status": true, "message": "User created successfully" });
} else {
res.send({ "status": false, "message": "Error creating user" });
}
}
userServices.js
var userModel = require('./userModel');
var key = '123456799asddfffff';
var encryptor = require('simple-encryptor')(key);
module.exports.createUserDBService = (userDetais) => {
return new Promise(function myFn(resolve, reject)
{
var userModelData = new userModel();
userModelData.firstname = userDetais.firstname;
userModelData.lastname = userDetais.lastname;
userModelData.email = userDetais.email;
userModelData.password = userDetais.password;
var encrypted = encryptor.encrypt(userDetais.password);
userModelData.password = encrypted;
userModelData.save(function resultHandle(error, result)
{
if (error)
{
reject(false);
}
else
{
resolve(true);
}
});
});
}
userModel.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
firstname: {
type: String,
required: true
},
lastname: {
type: String,
required: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
}
});
module.exports = mongoose.model('users', userSchema);
有两种解决方案:
- 在controller.js中添加try…catch
- 在userservice.js中你可以选择
resolve(false)
1。如果你没有修改userservice.js
var createUserControllerFn = async (req, res) =>
{
try {
console.log(req.body);
var status = await userService.createUserDBService(req.body);
console.log("*************************");
console.log(status);
console.log("*************************");
res.send({ "status": true, "message": "User created successfully" });
} catch(e) {
res.send({ "status": false, "message": "Error creating user" });
}
- 解决方案,如果您已更改
reject(false)
为resolve(false)
var createUserControllerFn = async (req, res) =>
{
try {
console.log(req.body);
var status = await userService.createUserDBService(req.body);
console.log("*************************");
console.log(status);
console.log("*************************");
if(status) {
return res.send({ "status": true, "message": "User created successfully" });
}
res.send({ "status": false, "message": "Error creating user" });
} catch(e) {
res.send({ "status": false, "message": "Error creating user" });
}