首页 > 解决方案 > 在 MongoDB 上插入的数据仅使用 NodeJS 保存 ID

问题描述

所以我有这个 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 而不是我插入的那三个字符串?

标签: node.jsmongodbexpress

解决方案


我认为您的数据库连接应该在初始化 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.路由

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


推荐阅读