2016-08-07 6 views
1

Ниже приведен пример кода, который я скопировал с веб-сайта. Я пытаюсь сохранить информацию в mongodb. Я пробовал аналогичные ответы по поводу переполнения стека, но до сих пор не могу его решить.Mongoose save error

Когда я запускаю его и записываю идентификатор, метод сохранения имени и возраста не работает, но не дает сообщения об ошибке. В чем причина? Заранее благодарю за любую помощь.

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')); 
}); 

ответ

1

Это работает, если вы измените схему так:

var Schema = new mongoose.Schema({ 
    email: String, 
    name: String, 
    age: Number 
}); 

Я хотел бы также рекомендовать изменение модели от «ого» просто быть «пользователем». Или все вары от «пользователя» до «emp». Быть последовательным является более читаемым и сэкономит ваше время позже по дороге. Также похоже, что вам не хватает: require('jade') наверху.

Вы можете запросить информацию по электронной почте, чтобы найти пользователя. Mongo автоматически генерирует _id для вставки.

Надеюсь, это полезно!

+0

Спасибо! Надо быть осторожным. – emre01

+0

Удивительный! Рад, что смог помочь. – Jebrial