Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB-Mongoose-只能调用控制器save方法一次。那它就再也不会存钱了_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript MongoDB-Mongoose-只能调用控制器save方法一次。那它就再也不会存钱了

Javascript MongoDB-Mongoose-只能调用控制器save方法一次。那它就再也不会存钱了,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,请看下面的编辑 我所做的是通过post请求调用controllers save函数。当我第一次运行该方法时,它似乎保存了我创建的两个对象。然后它把我引向好的路线。但是当我回去的时候,我会发同样的帖子。它给了我控制台。日志的,但从来没有实际保存它们 路由器: app.post('/new', function(req, res, next){ poll.newPoll(req, res, next); next(); }, function(req, res){ res.redirec

请看下面的编辑

我所做的是通过post请求调用controllers save函数。当我第一次运行该方法时,它似乎保存了我创建的两个对象。然后它把我引向好的路线。但是当我回去的时候,我会发同样的帖子。它给了我控制台。日志的,但从来没有实际保存它们

路由器:

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
只有当我删除数据库中的所有数据时,它才能再次保存。我希望这是足够的信息提供。我已经在谷歌上搜索了2个多小时来寻找解决方案,但它没有给我一个。这可能是我做的蠢事,或者是我忽略了什么

谢谢


编辑:


很明显,它正在保存,但没有记录在日志中。如果我知道的话,哈哈。我能做些什么吗?

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

//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,以确保它们是唯一的。

尝试替换此
var Poll=require('../modules/Poll.js')带有
var Poll=mongoose.model('Poll')在您的控制器中,请参见..@JAG,它只会给我另一个错误:MissingSchemaError:Schema尚未为模型“Poll”注册。使用mongoose.model(名称,模式)。谢谢,但这并不能解决我遇到的问题,哈哈