Поле Meteor collection2 в списке $unset
У меня есть простая схема:
imageUrl: {
type: Object,
optional: true,
autoValue: function() {
if (Meteor.isClient) return;
var imageField = this.field('imageId');
if (!imageField.isSet){
this.unset();
} else {
var imageObj = MealsImages.findOne(imageField.value);
if (imageObj){
return {thumb: imageObj.S3Url('thumb'), big: imageObj.S3Url('big')};
}
}
},
autoform: {
label: false,
type: 'hidden',
afFieldInput: {
type: "hidden"
}
}
},
По какой-то причине, когда я обновляю запись, это поле всегда появляется в массиве $unset:
Meteor.methods({
mealUpsert: function(doc, mealId) {
check(doc, Meals.simpleSchema());
console.log('test7');
console.log(doc);
if (mealId){
Meals.update({_id: mealId}, doc);
} else {
mealId = Meals.insert(doc);
}
return false;
}
});
Распечатает:
I20150830-21:49:39.560(-4)? { '$set':
...
I20150830-21:49:39.562(-4)? '$unset':
I20150830-21:49:39.562(-4)? { imageUrl: '',
...
Я использую автоформу:
<template name="mealUpdateForm">
<div class="meal-content">
{{> quickForm collection="Meals" doc=this id="mealUpdateForm" meteormethod="mealUpsert" type="method-update"}}
</div>
</template>
И никогда не будет обновлен или установлен. Любая подсказка, почему поле может появиться в $unset
список?
1 ответ
Я думаю, что я понял это - у вас есть this.unset()
в вашем autoValue
для imageUrl. Это вызывается всякий раз, когда вы опускаете imageId из модификатора, даже если он уже присутствует в документе, который вы модифицируете!