在MongoDB上插入的数据仅使用NodeJS保存ID

时间:2018-08-22 07:30:12

标签: node.js mongodb express

所以我有这个Express,NodeJS,MongoDB(mLab)作为我的项目

我在Postman的http://localhost:3000/api/comment上插入了三个字符串,并且成功插入了它,但是当我在mLab.com上检查数据库时,它仅包含一个ID

{
    "_id": {
        "$oid": "5b7d0f70f097a71eccb9b360"
    },
    "__v": 0
}

我有这样的模特

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var UserSchema = new Schema({
    name: String,
    comment: String,
    date: String
});

module.exports = mongoose.model("User", UserSchema);

我有这样的server.js

var express = require('express');
var morgan = require('morgan');
var bodyParser = require('body-parser');
var config = require('./config');
var mongoose = require('mongoose');

var app = express();

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(morgan('dev'));

var api = require("./app/routes/api")(app, express);

app.use('/api', api);

app.get('*',(req, res)=>{
    res.sendFile(__dirname + '/public/views/index.html');
});

mongoose.connect(config.database, { useNewUrlParser: true },(err)=>{
    if(err){
        console.log(err);
    }else{
        console.log('Connected to DB');
    }
});



app.listen(config.port, (err) =>{ 
    if(err){
        console.log(err);
    }else{
        console.log('Listening on port:'+ config.port);
    }
});

和我的api.js,其中我的POST方法在这里

var User = require('../models/user');


module.exports = function(app,express){

    var api = express.Router();

    api.post('/comment', function(req,res){
        var user = new User({
            name: req.body.name,
            comment: req.body.comment,
            date: req.body.date
        });

        user.save(function(err){
            if(err){
                res.send(err);
                return;
            }

            res.json({ message: "User has commented"});
        });
    });

    return api;
}

有什么想法为什么它只包含ID而不是我插入的那三个字符串?

2 个答案:

答案 0 :(得分:0)

我以为您的数据库连接应该在初始化Express应用程序之后建立,然后可以遵循中间件和路由。 步骤

1。 var app = express();

2。

mongoose.connect(config.database, { useNewUrlParser: true },(err)=>{
    if(err){
        console.log(err);
    }else{
        console.log('Connected to DB');
    }
})

3。中间件

4。路由

我认为问题与Node.js如何解析代码行有关。

答案 1 :(得分:0)

我认为您的数据库连接应该在初始化Express应用程序之后建立,然后您的中间件和路由才可以执行。

步骤

1。 doDogThing

2。var app = express();     mongoose.connect(config.database, { useNewUrlParser: true },(err)=>{

3。中间件

4。路由

我认为问题与Node.js如何解析代码行有关。