Как мне обновить неуникальное свойство во Freebase?
Я работал над счетчиком калорий и медленно продвигаюсь в написании MQL. Проблема, с которой я сейчас сталкиваюсь, - это обновление самого рецепта, который находится в /common/topic/description
имущество.
В настоящее время я использую запрос:
[{
id: recipeId, // previously retrieved
'/common/topic/description': {
connect: 'replace',
value: $('#description textarea').val(),
lang: '/lang/en'
}
}]
Это успешно выполняется, но когда я запрашиваю ( другой) после его запуска, я получаю сообщение об ошибке:
{
"domain": "global",
"reason": "invalid",
"message": "Unique query may have at most one result. Got 2",
"locationType": "other",
"location": "/common/topic/description"
}
Согласно документации, connect: replace
обновляет уникальные свойства и вставляет неуникальные. Так я получаю это, потому что значение было вставлено?
Нужно ли удалять другое значение, чтобы предотвратить ошибку? Нужно ли знать существующее значение, чтобы удалить его?
{
id: recipeId,
'/common/topic/description': {
connect: 'delete',
value: 'Value currently stored',
lang: '/lang/en'
}
}
1 ответ
Проблема не имеет ничего общего с обновлением неуникальных свойств. Ваш запрос на чтение является проблемой. Вы не процитировали ошибочный запрос, но часть сообщения об ошибке, которая говорит "location": "/common/topic/description"
это твой намек. Эта тема имеет два описания: одно пустое, а другое нет, но вы не использовали нотацию массива в своем запросе.
Это будет работать:
[{
"id": "/m/0wh83sg",
"/food/recipe/ingredients": [{
"id": null,
"ingredient": {
"id": null,
"name": null,
"/food/food/energy": null,
"/common/topic/image": {
"id": null,
"optional": true,
"limit": 1
},
"optional": true
},
"unit": {
"id": null,
"name": null,
"optional": true
},
"quantity": null,
"notes": null
}],
"/common/topic/description": [{}]
}]