首页 > 解决方案 > model.save() 返回一个无效的输出

问题描述

我正在使用本文中的 Node.js、mongodb 和 express 对 RESTApi 进行简单测试:MERN 第 I 部分:使用 Node.js 和 Express 构建 RESTful API, 但我无法找到代码中的某处错误。文章的作者使用了 babel,但由于其他一些错误,我避免了它。以下是代码文件:

应用程序.js

var routes= require('./src/routes/userRoutes').routes
var express= require("express")
var mongoose=require('mongoose')
var bodyParser=require('body-parser')

const app = express();
const PORT=4001

// SET INDEX PAGE
app.get('/',function(req,res){
    res.send(`Node and express server running on PORT ${PORT}`);
});

// START SERVER
app.listen(PORT,function(){
    console.log(`Your server is running on PORT ${PORT}`);
});

// ESTABLISH ROUTES
routes(app)

// Join Database to API
mongoose.Promise= global.Promise;
mongoose.connect('mongodb://localhost/userdb', {
    useNewUrlParser:true,
    useUnifiedTopology:true
})

// body-parser setup
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

userModel.js :我已注释掉“必需”以避免验证错误并查看集合中保存的文档。

var mongoose = require('mongoose')
const Schema = mongoose.Schema;
const  UserSchema = new Schema({
    userName:{
        type:String,
        //required:"Enter your name",
    },
    UserID:{
        type:Number,
        //required:"Enter User ID:",
    },
    password:{
        type:String,
        // reequired:"Enter your password?",
    }
});
module.exports={UserSchema}

用户控制器.js:

var mongoose=require('mongoose')
var UserSchema = require("../models/userModel").UserSchema;
const UserModel= mongoose.model("Users",UserSchema)
const addNewUser = (req,res) => {
    let newUser= new UserModel(req.body);
    newUser.save((err,user) => {
        if(err) res.send(err)
        else res.json(user)
    })
}
module.exports={addNewUser}

用户路由.js:

var addNewUser = require('../controllers/userController').addNewUser;

const routes = (app) => {
    // create routes for login/signup/view
    app.route('/users')
    .get((req,res)=> res.send("Get request successful"))
    
    app.route('/users/:userID')
    .put((req,res)=>res.send(`Put Request succesful for ${req.params.donationID}`))
    .delete((req,res)=>res.send("delete Request successful"))
    .post(addNewUser);

    app.route('/done')
    .get((req,res)=>{
        res.send("Goodbye");
        process.exit(0);
    });
}
module.exports={routes};

带有 URI 的 POST 请求时收到响应:localhost:4001/users/1?userName=Adnan&UserID=123&password=0000

{
    "_id": "5fd0b07b12615110d420a91b",
    "__v": 0
}

预期输出:JSON 中的用户对象

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


推荐阅读