我刚刚将我的 rxdb 模式版本从 0 更改为 1,以便添加一个deletedAt
属性。我添加了从版本 0 到 1 的迁移策略。
现在我收到此错误:“文档迁移失败最终文档与最终模式不匹配”。最终文档在下面的屏幕截图中:
我想也许我必须添加该_rev
字段;添加_rev
到架构并没有消除错误,所以我把它拿回来了。同上一个deleted
字段(抱怨我不能将它添加为顶级属性)。所以我不知道为什么最终对象与预期的模式不同?
输入信息
export type TodoType = {
id: string
text: string
isCompleted: boolean
createdAt: string
updatedAt: string
deletedAt: string
}
//...
export const todoSchema: RxJsonSchema<TodoType> = {
title: 'todo schema',
description: 'todo schema',
version: 1, // just changed this from 0 to 1
type: 'object',
properties: {
id: {
type: 'string',
primary: true
},
text: {
type: 'string'
},
isCompleted: {
type: 'boolean'
},
createdAt: {
type: 'string',
format: 'date-time',
// index: true,
},
updatedAt: {
type: 'string',
format: 'date-time'
},
deletedAt: {
type: 'string',
format: 'date-time'
},
},
required: ['id', 'text', 'isCompleted', 'createdAt', 'updatedAt', 'deletedAt'],
indexes: ['createdAt']
}
迁移代码
await myDatabase.collection({
name: 'todos',
schema: todoSchema,
methods: todoMethods,
statics: todoCollectionMethods,
migrationStrategies: {
// 1 means, this transforms data from version 0 to version 1
1: function(oldDoc: TodoDocument) {
oldDoc.updatedAt = oldDoc.updatedAt === '' ? oldDoc.createdAt : oldDoc.updatedAt
oldDoc.deletedAt = oldDoc.deleted ? oldDoc.updatedAt : ''
return oldDoc;
}
}
})