获取 "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;

好的,我自己解决了这个问题。问题是-

  1. 我需要在 REST 客户端中将 headers 设置为 Content-Type: application/json
  2. 我正在发送我错过的数据 " 就像 fname 应该是 "fname",所以要发布的正确数据就像 -

    { "fname": "Test", "lname": "Tester", "email": "techadmin@gmail.com", "password": "12345" }