类型错误:无法读取未定义的属性“_resetCount”

问题描述 投票:0回答:1

我从 watermelondb 文档中实现了基本的 syc 示例,并遇到了这个问题,我在任何地方都找不到任何内容。 示例片段 在发出任何请求之前,如果没有执行任何推/拉操作,同步请求似乎会失败。 可能是我的表结构搞乱了一切,但文档根本没有多大帮助。

示例片段:

import { synchronize } from '@nozbe/watermelondb/sync'

async function mySync() {
  await synchronize({
    database,
    pullChanges: async ({ lastPulledAt, schemaVersion, migration }) => {
      const urlParams = `last_pulled_at=${lastPulledAt}&schema_version=${schemaVersion}&migration=${encodeURIComponent(
        JSON.stringify(migration),
      )}`
      const response = await fetch(`https://my.backend/sync?${urlParams}`)
      if (!response.ok) {
        throw new Error(await response.text())
      }

      const { changes, timestamp } = await response.json()
      return { changes, timestamp }
    },
    pushChanges: async ({ changes, lastPulledAt }) => {
      const response = await fetch(`https://my.backend/sync?last_pulled_at=${lastPulledAt}`, {
        method: 'POST',
        body: JSON.stringify(changes),
      })
      if (!response.ok) {
        throw new Error(await response.text())
      }
    },
    migrationsEnabledAtVersion: 1,
  })
}

4 个表中的一个看起来像这样:

      tableSchema({
        name: 'requests',
        columns: [
          // Fails with and without this collumn
          { name: '_resetCount', type: 'number' },

          { name: 'created_at', type: 'number' },
          { name: 'updated_at', type: 'number' },
          { name: 'request_id', type: 'number' },
          { name: 'request_created_at', type: 'number', isOptional: false },
          { name: 'sender_auth_id', type: 'string' },
          { name: 'target_auth_id', type: 'string' },
          { name: 'status', type: 'string' },
        ]
      }),

以及对应型号:

class Request extends Model {
  static table = 'requests';

  
  @readonly @date("created_at") createdAt;
  @readonly @date("updated_at") updatedAt;
// again fails with and without this line
  @field('_resetCount') resetCount;

  @field('request_id') requestId;
  @field('request_created_at') requestCreatedAt;
  @field('sender_auth_id') senderAuthId;
  @field('target_auth_id') targetAuthId;
  @field('status') status;
}

我尝试添加/删除列、重置应用程序和数据库,但无法解决这个问题。 文档根本没有帮助

database react-native expo synchronization watermelondb
1个回答
0
投票

确保您已正确设置所有导入! Watermelondb 还不是成品,如果您在这方面犯了任何错误,它不会警告您。 (已解决)

© www.soinside.com 2019 - 2024. All rights reserved.