我目前正在使用mongoose和node.js。
我正在使用这些模式(缩短了这个问题):
var gameSchema = new Schema({
gameId: { type: Number },
rounds: [Round.schema]
});
var roundSchema = new Schema({
roundId : { type: Number },
lines: [Line.schema]
}, { _id : false });
var lineSchema = new Schema({
lineId: { type: Number }
plays: [ Play.schema ]
}, { _id : false });
var playSchema = new Schema({
category: { type: String },
score: { type: Number }
}, { _id : false });
我首先通过findOne()在圆形阵列中获得一个圆形游戏,然后改变一些属性并将具有多个游戏的线条推向该轮。当我尝试做一个
game.save(function(err) {
console.log("it's doing the save");
if(!err) {
console.log('ok');
} else {
console.log('ERROR: ' + err);
}
});
服务器只是挂起并且什么都不做,没有打印出任何控制台消息。看着猫鼬日志,我找不到任何错误信息或一些帮助我的日志。
奇怪的是,如果我用空的[]替换plays数组,则保存按预期工作。
以下是我要保存的游戏文档示例:
{ __v: 1,
_id: 53d427c43ff7f8bc1b9aa3b6,
gameId: 1,
rounds: [
{ roundId: 1,
lines: [
{ lineId: 1,
plays: [
{ score: 10,
category: 'COLORES'
},
{ score: 10,
category: 'ANIMALES'
}
]
}
]
}
]
}
有什么想法吗?
谢谢!
答案 0 :(得分:2)
经过几天和几天撞到墙上,我想到了我的问题。
我的“PlaySchema”有一个方法定义,该方法称为验证。
PlaySchema.method.validate
该方法是阻止我的Play保存到数据库中的方法。 一旦我将该方法名称更改为“验证”以外的其他名称,它就可以正常工作。 似乎mongo将“验证”视为一个保留词。