2

大家晚安,我有以下问题。我正在使用来自 WatermelonDB 的同步功能,但它在运行时会出现此错误。我确定一个对象手动查看它为什么不起作用。

如果插入不同步,同样的对象也会起作用。有谁知道如何解决?

    await synchronize({
    database,
    pullChanges: async ({ lastPulledAt }) => {
      const { data } = await api.get(`/sync/pull/${1637416552 || 0}`);
      console.log(JSON.stringify(data.changes, null, 2));
      return {
        // changes: data.changes,
        changes: {
          sub_workspaces: {
            created: [
              {
                sub_workspace_id: 57,
                name: "Teiu",
                avatar_url: "-",
                slug: "teiu",
                workspace_id: 19,
              },
            ],
            updated: [],
            deleted: [],
          },
        },
        timestamp: 1637416552,
      };
    },
    pushChanges: async ({ changes }) => {},
  });
    import { tableSchema } from '@nozbe/watermelondb'
    
    const subWorskapceSchema = tableSchema({
        name: 'sub_workspaces',
        columns: [
            {
                name: 'sub_workspace_id',
                type: 'number',
            },  
            {
                name: 'name',
                type: 'string'
            },
            {
                name: 'avatar_url',
                type: 'string'
            },
            {
                name: 'slug',
                type: 'string'
            },
            {
                name: 'workspace_id',
                type: 'number'
            },
        ]
    })    
    export { subWorskapceSchema }

在此处输入图像描述

4

1 回答 1

0

早上好,错误是因为您没有收到“id”字段,而西瓜需要它来创建、更新或删除记录。更改的结构很好,只需要添加具有字符串类型值的字段“id”尝试:

await synchronize({
    database,
    pullChanges: async ({ lastPulledAt }) => {
      const { data } = await api.get(`/sync/pull/${1637416552 || 0}`);
      console.log(JSON.stringify(data.changes, null, 2));
      return {
        // changes: data.changes,
        changes: {
          sub_workspaces: {
            created: [
              {
                id: 'testid'
                sub_workspace_id: 57,
                name: "Teiu",
                avatar_url: "-",
                slug: "teiu",
                workspace_id: 19,
              },
            ],
            updated: [],
            deleted: [],
          },
        },
        timestamp: 1637416552,
      };
    },
    pushChanges: async ({ changes }) => {},
  });
于 2022-02-09T13:14:50.093 回答