node.js - 在 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 而不是我插入的那三个字符串?
解决方案
我认为您的数据库连接应该在初始化 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 如何解析代码行有关。