0
我與下面的模式工作,我只所示的與此有關的部分:MongoDB的 - 從JavaScript數組創建MongooseDocumentArray
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var punchSchema = new Schema({punch: Date});
/**
* Child Schema
*/
var ChildSchema = new Schema({
punchesIn: [punchSchema]
});
mongoose.model('Child', ChildSchema);
什麼我試圖做到的是要能坐子文檔,並從javascript數組更新punchesIn字段。所以,如果我有:
Child1{
_id: XYZ
punchesIn: [Date1, Date2, Date3]
}
jsArray = [Date4, Date2, Date5]
我將能夠運行的更新和Child1將成爲:
Child1{
_id: XYZ
punchesIn: [Date4, Date2, Date5]
}
這裏是什麼,我嘗試了簡單化的版本,沒有語法錯誤,與實際執行中,這是作秀:
Child.findById(XYZ, function(err, child) {
var query = {'_id': XYZ };
var update = { $set: {
punchesIn: jsArray
},
};
var options = { new: true };
Child.findOneAndUpdate(query, update, options, function(err, child) {
if (err) {
console.log('got an error');
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
}
});
運行這段代碼,我知道在文檔中的非陣列領域工作,會導致以下錯誤:
500 TypeError: Cannot use 'in' operator to search for '_id' in punchesIn
從我可以收集,這是因爲punchesIn的類型是MongooseDocumentArray,而jsArray只是一個JavaScript數組。
是否有可能運行某種會創建MongooseDocumentArray的循環,其中不同的字段是在jsArray中找到的日期的文檔版本?
於是,我就帶你寫了什麼我簡單的例子,它適應我的項目,它不是很實用。下面是一個簡單的代碼片段: http://i.imgur.com/B2vfqFr.png ,但在行outArr.push ...衝不包含衝頭字段中的值,在這裏看到: HTTP ://i.imgur.com/JyHFjCT.png 任何想法爲什麼拳不能正確構建?我認爲這可能與新的Date()的格式有關,但沒有得到任何地方。 這裏是我的服務器模型,包含模式,如果有幫助: http://i.imgur.com/0lXLfhM.png – Trofee
您的punch模式上聲明的屬性是punch而不是日期。 –
是的,那會是問題,不知道爲什麼我沒有接受。非常感謝,它的全部工作! – Trofee