2017-07-03 40 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' 

它現在的作品!