Search code examples
react-nativewatermelondb

WatermelonDB - Error when performing batch insertion


I have a single table created on WatermelonDB, in my React Native Android app. When I use batch to insert new records to the table, from a component, I get the error TypeError: Cannot read property 'id' of undefined thrown inside batch.

This is where batch is called with a list of Promise objects:

await database.action(async () => {
              const allRecords = this.prepareInsertion(smsTransaction, records);
              await database.batch(...allRecords);
              console.log(allRecords.length);
            });
prepareInsertion(smsTransaction, messages) {
    return messages.map(async message => {
      try {
        return smsTransaction.prepareCreate(transaction => {
          const parsedFields = parseFields(message);
          transaction.type = parsedFields.type;
          transaction.read_at = parsedFields.read_at;
        });
      } catch (e) {
        console.log(e);
      }
    });
  }

Solution

  • Issue was with the async keyword.

    return messages.map(message => {
    

    Models to be passed to database.batch, not Promises.