#reactjs #amplify
#reactjs #усиливать
Вопрос:
В react у меня есть следующий код, который работает в автономном режиме. Я, очевидно, нашел это.:
async function deleteMessage() {
toDelete = await DataStore.query(Message, c => c.id("eq","4faebf3b-f89a-4e34-978a-0fea611897e0"))
alert("toDelete: " !toDelete ? toDelete : toDelete.length )
if (!toDelete || (toDelete !== undefined amp;amp; toDelete.length == 0))
{
alert("Nothing to delete")
return
}
alert("Deleting " toDelete.length " records.")
alert("id for 0 = " toDelete[0].id " title: " toDelete[0].title " color: " toDelete[0].color " createdAt: " toDelete[0].createdAt)
await DataStore.delete(toDelete);
alert("after delete")
// updateFormState(initialState)
}
В toDelete все поля корректны и отображаются в предупреждении перед фактическим удалением, поэтому toDelete должна быть правильной моделью.
Единственное предупреждение гласит: удаление 1 записи.
Следующее предупреждение гласит: идентификатор для 0 = 4faebf3b-f89a-4e34-978a-0fea611897e0 заголовок: aaasdfasdf цвет: #6c2f2f Дата создания: не определено
Но он никогда не возвращается после удаления, и я получаю сообщение об ошибке:
Unhandled Rejection (Error): Object is not an instance of a valid model
DataStore.<anonymous>
C:/Projects/React/src/datastore/datastore.ts:897
894 | sortPredicate = ModelSortPredicateCreator.createFromExisting(modelDefinition, paginationProducer.sort);
895 | }
896 | return {
> 897 | limit: limit,
| ^ 898 | page: page,
899 | sort: sortPredicate,
900 | };
View compiled
Что я упускаю из виду?
Кроме того, модель:
type Message @model {
id: ID!
title: String!
color: String
createdAt: String
}
Спасибо.
Ответ №1:
Понял это.
Изменить на удаление = ожидание хранилища данных.запрос (сообщение, c => c.id («эквалайзер», «4faebf3b-f89a-4e34-978a-0fea611897e0»))
Для
Удаление = ожидание хранилища данных.запрос (сообщение, «4faebf3b-f89a-4e34-978a-0fea611897e0»))
Первый пример возвращает массив объектов. Второй пример возвращает объект.
DataStore.delete() ожидает объект, а не массив объектов. Я передавал массив объектов.
DataStore.delete(toDelete) будет работать со 2-м примером, но не с первым, поскольку это был объект.
Если я использую первый пример, придется использовать:
DataStore.delete(удаление [0])