2015-05-11 4 views
1

с использованием [email protected] и с upsert на стороне сервера дают мне проблемы. Он либо жалуется, что синтаксис неверен для вставки или обновления, или я просто делаю это неправильно?Проблемы с использованием метеоров upsert

ниже код будет работать на вставках, но об обновлениях бросить:

Error: Update parameter cannot have both modifier and non-modifier fields.

Mail.upsert({ ma_user_id: userId }, { 
    ma_user_id: userId, 
    ma_address: userEmail, 
    ma_verified: false 
}, function (e, r) { 
    console.log(e, r); 
}); 

ниже код работает на обновления, но выбросит эту ошибку на вставках: MongoError:

The dollar ($) prefixed field '$exists' in 'removed.$exists' is not valid for storage.

Mail.upsert({ ma_user_id: userId }, { $set: { 
    ma_user_id: userId, 
    ma_address: userEmail, 
    ma_verified: false 
    } 
}, function (e, r) { 
    console.log(e, r); 
}); 

Я также пробовал это, что дает мне сообщение об ошибке:

сообщение

Error: Update parameter cannot have both modifier and non-modifier fields.

Mail.update({ ma_user_id: userId }, { 
    ma_user_id: userId, 
    ma_address: userEmail, 
    ma_verified: false 
    }, { 
    upsert: true 
    }, function (e, r) { 
    console.log(e, r); 
    }); 

ответ

0

Ошибка в основном говорит, что вы не можете использовать то же поле и в селекторе и модификатора. Таким образом, вы должны удалить ma_user_id из модификатора, как это:

Mail.upsert({ ma_user_id: userId }, {  
    ma_address: userEmail, 
    ma_verified: false 
}, function (e, r) { 
    console.log(e, r); 
}); 
+0

Делать это не добавит 'ma_user_id' поле, если вставка происходит. – jt123

Смежные вопросы