我正在使用猫鼬。我只是想更新特定用户订阅的订阅状态。
我有以下数据库结构:
var subscriptionSchema = new mongoose.Schema({
subscription_id :String,
start: String,
status: String,
user_id: String,
cancel_at_period_end: String,
current_period_start: String,
current_period_end: String,
ended_at: String,
trial_start: String,
trial_end: String,
canceled_at: String,
quantity: String,
application_fee_percent: String,
discount: String,
tax_percent: String
});
// define the schema for our user model
var userSchema = mongoose.Schema({
stripe : {
stripe_customer_id: String,
default_card: String
},
subscriptions: [subscriptionSchema],
cards: [cardSchema]
});
我有这个代码,它不会抛出任何错误,但它也不会更新状态。有任何想法吗? Subscription_id对记录是唯一的。用户可能有多个订阅
var user = require('./models/user');
user.update(
{
'subscriptions.subscription_id':updatedsubscription_id
},
{
status: updatedsubscription_status
},
{ upsert: true }, function(err, doc){
if (err) return console.log(err);
return console.log('updated the subscription in db');
}
);
答案 0 :(得分:1)
按id更新数组元素时,可以使用更新对象中的$
positional operator来表示查询匹配的元素的索引:
user.update(
{
'subscriptions.subscription_id':updatedsubscription_id
},
{
'subscriptions.$.status': updatedsubscription_status
},
function(err, count){
if (err) return console.log(err);
return console.log('updated the subscription in db');
}
);