获取 "message":"Admin validation failed" 猫鼬错误,node.js
Getting "message":"Admin validation failed" Error in mongoose, node.js
我在控制台中收到 setHeader 错误,在 REST 客户端上收到验证错误,不知道我做错了什么..帮助我 --
控制台出错 -
_http_outgoing.js:335
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
RESTClient 错误 -
{"message":"Admin validation failed","name":"ValidationError","errors":{"email":{"properties":{"type":"required","message":"Path `{PATH}` is required.","path":"email"},"message":"Path `email` is required.","name":"ValidatorError","kind":"required","path":"email"}}}
下面是POSTAPI我打的-http://localhost:8000/admin/create
请求正文-
{
fname: "Test",
lname: "Tester",
email: "techadmin@gmail.com",
password: "12345"
}
----------------我的代码如下---------
以下是我的 server.js 文件 -
var express = require('express'),
app = express(),
mongoose = require('mongoose'),
bodyParser = require('body-parser'),
port = 8000;
var dbURI = "mongodb://localhost/testdb";
// Connect to the mongo database
mongoose.connect(dbURI);
// Allow app to make POST request
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var routes = require('./server/routes/routes.js')(app);
app.listen(port, function(){ console.log('App started at port '+ port) });
这是我的 routes.js 文件 -
var admin = require('../controllers/adminCtrl.js');
module.exports = function(app) {
// Define all Routes here
app.post('/admin/create', function(req, res){
console.log(" In /admin/create Route");
admin.register(req, res);
});
}
以下是我的 adminCtrl.js 文件 -
var Admin = require('./../models/admin.js');
var register = function(req, res){
console.log(" In Register Model");
var fields = {
fname: req.body.fname,
lname: req.body.lname,
email: req.body.email,
password: req.body.password
};
var admin = new Admin(fields);
admin.save(function(err, data){
if(err) {
res.send(err);
}
res.json({"status":200,"message":"Record inserted successfully", data: data});
});
};
exports.register = register;
以下是我的admin.js(模型)文件-
var mongoose = require('mongoose');
var adminSchema = new mongoose.Schema({
fname: { type: String, require:true },
lname: { type: String, require:true },
email : { type: String, required: true, unique: true },
password: { type: String, require:true },
});
var Admin = mongoose.model('Admin',adminSchema);
module.exports = Admin;
好的,我自己解决了这个问题。问题是-
- 我需要在 REST 客户端中将 headers 设置为
Content-Type: application/json
。
我正在发送我错过的数据 "
就像 fname 应该是 "fname"
,所以要发布的正确数据就像 -
{
"fname": "Test",
"lname": "Tester",
"email": "techadmin@gmail.com",
"password": "12345"
}
我在控制台中收到 setHeader 错误,在 REST 客户端上收到验证错误,不知道我做错了什么..帮助我 --
控制台出错 -
_http_outgoing.js:335
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
RESTClient 错误 -
{"message":"Admin validation failed","name":"ValidationError","errors":{"email":{"properties":{"type":"required","message":"Path `{PATH}` is required.","path":"email"},"message":"Path `email` is required.","name":"ValidatorError","kind":"required","path":"email"}}}
下面是POSTAPI我打的-http://localhost:8000/admin/create
请求正文-
{
fname: "Test",
lname: "Tester",
email: "techadmin@gmail.com",
password: "12345"
}
----------------我的代码如下---------
以下是我的 server.js 文件 -
var express = require('express'),
app = express(),
mongoose = require('mongoose'),
bodyParser = require('body-parser'),
port = 8000;
var dbURI = "mongodb://localhost/testdb";
// Connect to the mongo database
mongoose.connect(dbURI);
// Allow app to make POST request
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var routes = require('./server/routes/routes.js')(app);
app.listen(port, function(){ console.log('App started at port '+ port) });
这是我的 routes.js 文件 -
var admin = require('../controllers/adminCtrl.js');
module.exports = function(app) {
// Define all Routes here
app.post('/admin/create', function(req, res){
console.log(" In /admin/create Route");
admin.register(req, res);
});
}
以下是我的 adminCtrl.js 文件 -
var Admin = require('./../models/admin.js');
var register = function(req, res){
console.log(" In Register Model");
var fields = {
fname: req.body.fname,
lname: req.body.lname,
email: req.body.email,
password: req.body.password
};
var admin = new Admin(fields);
admin.save(function(err, data){
if(err) {
res.send(err);
}
res.json({"status":200,"message":"Record inserted successfully", data: data});
});
};
exports.register = register;
以下是我的admin.js(模型)文件-
var mongoose = require('mongoose');
var adminSchema = new mongoose.Schema({
fname: { type: String, require:true },
lname: { type: String, require:true },
email : { type: String, required: true, unique: true },
password: { type: String, require:true },
});
var Admin = mongoose.model('Admin',adminSchema);
module.exports = Admin;
好的,我自己解决了这个问题。问题是-
- 我需要在 REST 客户端中将 headers 设置为
Content-Type: application/json
。 我正在发送我错过的数据
"
就像 fname 应该是"fname"
,所以要发布的正确数据就像 -{ "fname": "Test", "lname": "Tester", "email": "techadmin@gmail.com", "password": "12345" }