この構文は非常に単純ですが、背景情報はより重要です。スニペットを再利用する前に、回答全体をお読みください。
YourType は、関数を使用して新しいフィールドで拡張できますYourType.addMember()
。このスニペットの例を参照してください。
$data.Entity.extend('Product', {
id: { type: 'int', key: true, computed: true },
Name: { type: 'string' }
});
$data.EntityContext.extend('Northwind', {
Products: { type: $data.EntitySet, elementType: Product},
});
Product.addMember('Description', {
type:'string',
key: false,
computed: false,
required: false
});
var context = new Northwind({provider: 'webSql', databaseName: 'Northwind'});
context.onReady(function() {
var product1 = new Product({ Name: 'Beer', Description: 'tasty'});
context.Products.add(product1);
context.saveChanges(function(result) {
//check the content of WebSQL DB
console.log(product1);
});
});
addMember()
コンテキストのインスタンスを作成する前にのみ使用できます。
重要な情報:
ライブラリにはデータの移行/マージはありません。webSql のスキーマ変更のデフォルトの動作は、DB を削除して再作成することです。IndexedDB はスキーマにバインドされていないため、既存のレコードは削除されません。このコードを実行して、さらにフィールドを追加してみてください。これは動作中のJSFiddleです。
本当の解決策は、JayData Pro の Schema Evolution モジュールを使用して、データ モデルの変更を管理することです。