本文整理匯總了TypeScript中@orbit/data.Schema.upgrade方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript Schema.upgrade方法的具體用法?TypeScript Schema.upgrade怎麽用?TypeScript Schema.upgrade使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類@orbit/data.Schema
的用法示例。
在下文中一共展示了Schema.upgrade方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: test
test('#upgrade upgrades the cache to include new models introduced in a schema', async function(assert) {
let person = {
type: 'person',
id: '1',
relationships: { planet: { data: { type: 'planet', id: 'earth' } } }
};
let models = clone(schema.models);
models.planet.relationships.inhabitants = {
type: 'hasMany',
model: 'person',
inverse: 'planet'
};
models.person = {
relationships: {
planet: { type: 'hasOne', model: 'planet', inverse: 'inhabitants' }
}
};
schema.upgrade({ models });
await source.update(t => t.addRecord(person));
assert.deepEqual(
source.cache.getRecordSync({ type: 'person', id: '1' }),
person,
'records match'
);
});
示例2:
.then(() => {
schema.upgrade({
models: {
planet: {
attributes: {
name: { type: 'string' }
}
},
moon: {
attributes: {
name: { type: 'string' }
}
}
}
});
});
示例3: skip
skip('will reopen the database when the schema is upgraded', async function(assert) {
const done = assert.async();
assert.expect(5);
assert.equal(source.cache.dbVersion, 1, 'db starts with version == 1');
source.cache.migrateDB = function(db, event) {
assert.equal(
event.oldVersion,
1,
'migrateDB called with oldVersion == 1'
);
assert.equal(
event.newVersion,
2,
'migrateDB called with newVersion == 2'
);
done();
};
schema.on('upgrade', version => {
assert.equal(version, 2, 'schema has upgraded to v2');
assert.equal(source.cache.dbVersion, 2, 'db has the correct version');
});
await source.cache.openDB();
await schema.upgrade({
models: {
planet: {
attributes: {
name: { type: 'string' }
}
},
moon: {
attributes: {
name: { type: 'string' }
}
}
}
});
});
示例4: test
test('#upgrade upgrades the cache to include new models introduced in a schema', function(assert) {
let cache = new MemoryCache({ schema, keyMap });
let person = {
type: 'person',
id: '1',
relationships: { planet: { data: { type: 'planet', id: 'earth' } } }
};
assert.throws(() => cache.patch({ op: 'addRecord', record: person }));
let models = clone(schema.models);
models.planet.relationships.inhabitants = {
type: 'hasMany',
model: 'person',
inverse: 'planet'
};
models.person = {
relationships: {
planet: { type: 'hasOne', model: 'planet', inverse: 'inhabitants' }
}
};
schema.upgrade({ models });
cache.upgrade();
cache.patch({ op: 'addRecord', record: person });
assert.deepEqual(
cache.getRecordSync({ type: 'person', id: '1' }),
person,
'records match'
);
assert.deepEqual(
cache.getRelatedRecordSync(person, 'planet'),
{ type: 'planet', id: 'earth' },
'relationship exists'
);
assert.equal(
cache.getInverseRelationshipsSync({ type: 'planet', id: 'earth' }).length,
1,
'inverse relationship exists'
);
});