Mongodb& Espress:将对象存储在模型中

时间:2016-01-01 23:16:59

标签: javascript mongodb mongoose

我有这个型号:

var userSchema = new mongoose.Schema(
    {
        userName: {type: String, required: true},
        firstName: {type: String},
        lastName: {type: String},
        password: {type: String, required: true},
        rate: Number,
        rates: {type: Object, default: {String: String}},

    }
);

我只想做一个put并将新密钥/ valye存储在费率中。首先,我检查rates是否正确初始化了。然后,当我执行put请求时,我在console.log中的所有参数都存在,并且我会在更新之前和之后打印,如您所见。

 if (data.rate) {
    console.log(user.rates,' before')
    user.rates[data.rate_id] = data.rate
    console.log(user.rates,' update')

    user.rate = updateRate(user.rates)
 }

现在我不关心user.rate但只关心user.RATES,所以问题如下:

先放,输出:

{} ' before'
{ '5686e0b40a8c0bc90a4fb4cc': '4' } ' update'

现在在下一个,如果我想把' 5'我期待:

{'5686e0b40a8c0bc90a4fb4cc': '4'} ' before'
{ '5686e0b40a8c0bc90a4fb4cc': '5' } ' update'

但我有这个:

{} ' before'
{ '5686e0b40a8c0bc90a4fb4cc': '5' } ' update'

因此我的user.rates尚未存储。这是我保存它的代码:

user.save();

祝你好运

1 个答案:

答案 0 :(得分:1)

您正尝试在需要{ ObjectId : String}的架构中的字段上保存以下对象:{String : String}