我目前有以下mongoose模型设置:
var Customer = mongoose.model('Customer', {
firstname : String,
lastname : String,
phone : String,
street : String,
city : String,
state : String,
zip : String,
fixed : Boolean,
readings: [Number]
});
以下列方式使用它:
app.post('/api/findcustomer/:customer_id/:customer_reading', function(req, res) {
Customer.update({_id: req.params.customer_id},
{$push: {readings: req.params.customer_reading}},
{upsert:true},
function(err, customer){
if(err){
console.log(err);
}else{
console.log("Successfully added");
}
});
Customer.findOne({
_id : req.params.customer_id
}, function(err, customer) {
if (err)
res.send(err);
res.json(customer);
});
});
目前正在运作。然而,我真正想要做的是读数(在我的模型中)是一个由阅读和日期组成的对象数组。我最好的尝试包括以下变化:
readings: [{reading: Number, date: String}]
和
{$push: {readings: {reading: req.params.customer_reading, date: 'Some Date'}}}
这对我不起作用,即使我在控制台中成功添加了日志,阵列仍然是空的。我不确定如何解决问题,到目前为止我的搜索没有产生任何结果。可能我的阶段在搜索时是错误的,在我请求考虑子文档数组或对象数组的情况下的读数,或者只是一个子文档本身?
任何帮助将不胜感激!
答案 0 :(得分:1)
Ug ...看来我的尝试是正确的,但是我试图将读数添加到使用旧架构构建的客户。当我使用NEW模式创建一个新客户并尝试将读取对象添加到数组时它工作了!