2013-09-03 3 views
0

Я работаю над calorie counter, и я медленно продвигаюсь вперед по своей записи в MQL. Проблема, которую я имею в настоящее время, заключается в обновлении самого рецепта, который находится в свойстве /common/topic/description.Как обновить не уникальное свойство в Freebase?

Запрос, который я использую в настоящее время является:

[{ 
    id: recipeId, // previously retrieved 
    '/common/topic/description': { 
    connect: 'replace', 
    value: $('#description textarea').val(), 
    lang: '/lang/en' 
    } 
}] 

Это преуспевает в исполнении, но когда я query (another) после того, как она закончилась, я получаю сообщение об ошибке:

{ 
    "domain": "global", 
    "reason": "invalid", 
    "message": "Unique query may have at most one result. Got 2", 
    "locationType": "other", 
    "location": "/common/topic/description" 
} 

По the documentation, 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": [{}] 
}] 
+0

Спасибо за показывая мне, как получить записи, но когда кто-то обновляет рецепт я не хочу, чтобы создать новую запись. Чтобы выполнить обновление, мне нужно удалить старую запись? – Will

+0

В этом контексте означает ли «запись» как '/ common/topic/description'? Поскольку свойство description допускает несколько значений, да, вам нужно удалить любые устаревшие значения, которые вам больше не нужны. –