下面是我从网站复制的示例代码。我正在尝试将信息保存到 mongodb。我已经尝试过有关堆栈溢出的类似答案,但仍然无法解决它。
当我运行它并写入 ID、姓名和年龄时,保存方法失败,但没有给出错误消息。原因可能是什么?预先感谢您的任何帮助。
var express = require('express');
var http = require('http');
var path = require('path');
var mongoose = require('mongoose');
var bodyparser = require('body-parser');
var methodOverride = require('method-override');
var app = express();
// all environments
app.set('port', process.env.PORT || 4000);
app.set('views', __dirname + '/views');
app.set("view engine", 'jade');
app.use(bodyparser.json());
app.use(methodOverride());
//app.use(app.router);
app.use(express.static(__dirname + '../public'));
//app.use(express.static(path.join(__dirname, 'public')));
//app.get('/', function (req, res) {
// res.render('index', {});
//});
app.get("/", function(req, res) {
res.sendFile(path.join(__dirname, "/index.html"));
});
mongoose.connect('mongodb://127.0.0.1/test');
mongoose.Promise = global.Promise;
var Schema = new mongoose.Schema({
_id : String,
name: String,
age : Number
});
var user = mongoose.model('emp', Schema);
app.get('/view', function(req, res){
user.find({}, function(err, docs){
if(err) res.json(err);
else res.render('index', {users: docs});
});
});
app.post('/new', function(req, res){
new user({
_id : req.body.email,
name: req.body.name,
age : req.body.age
}).save(function(err){
if(err) res.json(err);
else res.send('Successfully inserted!');
});
});
var server = http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
最佳答案
如果您将架构更改为以下内容,它就会起作用:
var Schema = new mongoose.Schema({
email: String,
name: String,
age: Number
});
我还建议将模型从“emp”更改为“user”。或者从“user”到“emp”的所有变量。保持一致更具可读性,并且会在以后节省您的时间。另外,您似乎缺少:顶部的 require('jade')
。
您可以通过电子邮件查询来查找用户。 Mongo 将在插入时自动生成一个 _id 。
希望这对您有所帮助!
关于node.js - Mongoose 保存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38818271/