React Amplify / Хранилище данных — не удается получить запись удаления для удаления

#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])