react-native - WatermelonDB - 执行批量插入时出错
问题描述
在我的 React Native Android 应用程序中,我在 WatermelonDB 上创建了一个表。当我使用批处理从组件向表中插入新记录时,我收到TypeError: Cannot read property 'id' of undefined
批处理中抛出的错误。
这是使用Promise
对象列表调用批处理的地方:
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);
}
});
}
解决方案
问题出在 async 关键字上。
return messages.map(message => {
要传递给 database.batch 的模型,而不是 Promises。
推荐阅读
- python-3.x - 带有 3rd 方数据库的 Django Channels 和 Web Socket
- php - 将字符串转换为对象 PHP
- django - 我有一个用户 ID 列表,我想检查每个可用的用户 ID,如果没有,我想获取不可用的以下 ID
- node.js - 如何在aws上的EBS链接上添加HTTPS?
- java - 如何在keycloak上设置令牌过期时间
- c# - Swagger 在 ASP.CORE 3 中为字典生成不正确的 URL
- react-native-android - 在 react native android .file 中生成发布版本时出现以下错误 .file 已经存在
- flutter - 如何在没有选择器 Flutter 的情况下从图库中获取随机照片?
- javascript - JSDoc Typescript 声明:如何自动注册自定义元素?
- xml - 当有一些相同的标签名称时,如何使用 perl 脚本过滤 xml 标签?