2017-07-03 55 views
0

这是我与工作模式:猫鼬:通过在阵列推对象更新

name: { 
    type: String 
}, 
payment: { 
    id: { 
    type: String, 
    required: true 
    }, 
    cards: [ 
    { 
     id: { 
     type: String 
     }, 
     is_default: { 
     type: Boolean, 
     "default": false 
     } 
    } 
    ] 
} 

我想将卡添加到cards阵列,例如:

card = 
    id: "some_token" 
    is_default: true 

我正在使用update方法将卡推送到阵列,但它不会将卡添加到文档。相反,它创建只有这些领域的一个新的文档:

{ 
    id: "some_token", 
    is_default: true, 
    _id: someId 
} 

任何想法,我怎么可以更新实际的文档,我瞄准,而不是创建一个新的文件?

这里是我的代码(使用CoffeeScript的):

update_where = 
    payment: 
    id: "some_id" 
update_push = 
    $push: 
    'payment.cards': 
     id: card_token 
     is_default: false 

Customer.update update_where, update_push, {upsert: true}, (err, results) -> 
    # Do something with the results 

回答

0

哦......我只注意到我的错误。问题出在where声明。 我做:

payment: 
    id: "some_id" 

而是写正确的事情是:

'payment.id': 'some_id' 

它现在的作品!