MongoDB – Mongoose – 只能调用一次控制器保存方法。 然后它再也不会保存了

请看下面的编辑请

我正在做的是通过发布请求调用控制器保存function。 当我第一次运行该方法似乎保存了我所做的2个对象。 然后它将我redirect到好的路线。 但是当我回去发布相同的POST请求。 它给了我console.log的,但从来没有实际保存它们。

路由器:

app.post('/new', function(req, res, next){ poll.newPoll(req, res, next); next(); }, function(req, res){ res.redirect('/ok'); }) 

架构:

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; //Schema for the polls var pollSchema = new Schema({ title: String, hash: String }); var Poll = mongoose.model('Poll', pollSchema); module.exports = Poll; 

和控制器:

 var Poll = require('../modules/poll.js'); var hash = require('randomstring'); var randomHash = hash.generate({ length: 5 }); //Function for creating new polls module.exports.newPoll = function(req, res, next){ var createdPoll = new Poll({title: "Wazap", hash: randomHash}); var secondPoll = new Poll({title: "Ok", hash: randomHash}); createdPoll.save(function (err, createdPoll) { if (err) { console.log(err); return handleError(err); } console.log("New Poll saved"); }); secondPoll.save(function (err, secondPoll) { if (err) { console.log(err); return handleError(err); } console.log("New Poll saved"); }); } 

mongoose初始化:

 var mongoose = require('mongoose'); //controllers var poll = require('./controllers/poll.js'); //Mongostuff mongoose.Promise = global.Promise; mongoose.connect('localhost:27017/pollr'); 

mongod日志:

 2016-08-11T14:51:38.142+0200 I COMMAND [conn3] command pollr.polls command: insert { insert: "polls", documents: [ { title: "Wazap", hash: "pxeZP", _id: ObjectId('57ac74d997df31a423f20049'), __v: 0 } ], ordered: false, writeConcern: { w: 1 } } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 reslen:40 locks:{ Global: { acquireCount: { r: 2, w: 2 } }, Database: { acquireCount: { w: 1, W: 1 } }, Collection: { acquireCount: { W: 1 } } } protocol:op_query 197ms 2016-08-11T14:51:38.143+0200 I COMMAND [conn4] command pollr.polls command: insert { insert: "polls", documents: [ { title: "Ok", hash: "pxeZP", _id: ObjectId('57ac74d997df31a423f2004a'), __v: 0 } ], ordered: false, writeConcern: { w: 1 } } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 reslen:40 locks:{ Global: { acquireCount: { r: 1, w: 1 } }, Database: { acquireCount: { w: 1 }, acquireWaitCount: { w: 1 }, timeAcquiringMicros: { w: 143945 } }, Collection: { acquireCount: { w: 1 } } } p 

只有当我删除我的数据库中的所有数据,它可以再次保存。 我希望这是足够的信息给。 我在谷歌search超过2个小时寻找解决scheme,但它没有给我一个。 这可能是我做的一些愚蠢的事情,或者我忽视了一些事情。

谢谢!


编辑:

它是保存,但不logging在日志中。 如果我只知道哈哈。 我能做些什么吗?

尝试使用以下方法同时创build多个文档。 它使用一个数组来保存文档,然后将该数组传递给create方法,该方法具有可用于调用错误的callback函数或对生成的保存文档执行某些操作。

 //Function for creating new polls module.exports.newPoll = function(req, res, next){ var docs = [{title: "Wazap", hash: randomHash}, {title: "Ok", hash: randomHash}]; Poll.create(docs, function (err, wazap, ok) { if (err) { console.log(err); return handleError(err); } console.log("Saved Wazap :" + wazap + " Saved Ok: " + ok) }); } 

我已经将保存的文件添加到console.log中,以便您可以检查它们的_id以确保它们是唯一的。