Promise rejected Node js mongoDB



我正在创建简单的注册表单节点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);

有两种解决方案:

  1. 在controller.js中添加try…catch
  2. 在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" });
}
  1. 解决方案,如果您已更改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" });
}

最新更新