我将此架构用于mulikey数组
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ConfigSchema = new Schema({
aaaa : String,
bbbb : String,
Stage: [{
cccc : String,
dddd : String,
eeee : String,
}, {index: true}]
}, { collection: 'Config' });
var ConfigModel = mongoose.model('Config', ConfigSchema);
module.exports = ConfigModel;
我正确地从html页面获取阶段的值。但是在分配值时,存在一些错误,它只存储最后一个阶段。(即,每次for循环运行时它都会覆盖值) 这里是分配值的代码,
var i = 0;
for (i = 0; i <= 1; i++) {
var addConfigModel = new ConfigModel(
{
aaaa : objmodel.aaa.value,
bbbb : objmodel.bbb.value,
Stage: [{
cccc : objmodel.Stage[i].ccc.value,
dddd : objmodel.Stage[i].ddd.value,
eeee : objmodel.Stage[i].eee.value,
}]
});
}
存储在mongodb中的cccc,dddd和eeee的值仅是最后的数组编号值。 我的架构有问题吗?如何在mongo中存储每个阶段的值?
答案 0 :(得分:0)
我不确定你是否正确使用mongodb
new ConfigModel()
find my doc.update()
因此,您每次使用默认值重新创建ConfigModule
文档,并在数组中添加最后一个值。
因此,我建议您在以下内容中优化您的代码:
var config = new ConfigModel()
config.aaaa = objmodel.aaa.value
config.bbbb = objmodel.bbb.value
config.Stage = [0, 1].map((i) => {
return {
cccc : objmodel.Stage[i].ccc.value,
dddd : objmodel.Stage[i].ddd.value,
eeee : objmodel.Stage[i].eee.value,
}
})
config.save(() => {
//
})
这将解决问题