所以我有这个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而不是我插入的那三个字符串?
答案 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如何解析代码行有关。