【发布时间】:2018-01-18 16:01:24
【问题描述】:
我是 Node.js 的新手,正在尝试解决一些问题。 我在 Node.js 服务器上为一个在 MongoDB 上写入用户信息的 Android 应用程序定义了一个注册函数。
server.js
var express = require('express'),
app = express(),
port = process.env.PORT || 3000,
mongoose = require('mongoose'),
Task = require('./api/models/serverModel'),
bodyParser = require('body-parser');
var url = "mongodb://localhost:27017/ProjectDB";
mongoose.Promise = global.Promise;
mongoose.connect(url);
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var routes = require('./api/routes/serverRoute');
routes(app);
app.listen(port);
console.log('Project RESTful API server started on: ' + port);
服务器模型
var UserSchema = new mongoose.Schema({
userName: {type: String, unique: true, required: true},
email: {type: String, unique: true, required: true},
password: {type: String, required: true},
createdAt: {type: String, required: true}
});
var User = mongoose.model('User', UserSchema);
module.exports = 用户;
服务器路由
module.exports = function(app) {
var Project = require('../controllers/serverController');
// Project Routes
app.route('/signup')
.post(Project.signup);
};
服务器控制器
...
mongoose.Promise = global.Promise;
exports.signup = function(req, res) {
return new Promise( function(resolve,reject) {
var user = new User({
userName: req.body.name,
password: req.body.pass,
mail: req.body.email,
createdAt : new Date()
});
user.save()
.then(function() { resolve({ status: 201, message: 'User Registered Successfully !' })})
.catch(function(err) {
if (err.code == 11000) {
reject({ status: 409, message: 'User Already Registered !' });
} else {
reject({ status: 500, message: 'Internal Server Error !' });
}
});
})};
...
它编译没有任何错误。 当我尝试像这样通过 Postman 发送 JSON 时:
{
"userName" : "username",
"email" : "user.name@gmail.com",
"password" : "blabla1"
}
它报告
UnhandledPromiseRejectionWarning: 未处理的promise Rejection (rejection id: 1) [object Object]
我已经阅读了大量的帖子,但我无法摆脱这一点。 有什么帮助吗? 谢谢。
【问题讨论】:
-
分享你使用注册功能的代码。
-
@mehta-rohan 我只需添加路线
-
@mehta-rohan 和邮递员的电话 (POST - localhost:3000/signup)
-
不看是无法解决的。你的注册函数返回一个承诺,我必须在另一端处理,仔细查看或分享。
-
所以这是罪魁祸首- // 项目路线 app.route('/signup') .post(Project.signup);您的 Project.signup 返回一个未处理的承诺。您需要在此处进行更改
标签: node.js controller promise postman