node-orm を使用してデータベースをセットアップしようとしています。モデルコードはこちら。
db = orm.connect("mysql", client, (success, db) ->
Strain = db.define("strain",
name:
type: "string"
validations: [ orm.validators.unique() ]
old_body:
type: "string"
body:
type: "string"
created_at:
type: "date"
update_at:
type: "date"
)
Strain.sync()
)
/orm/lib/databases/mysql.js ファイルを、返された同期情報を console.log に変更しました。
this._client.query(_query, function (err, info) {
console.log(err);
console.log(info);
console.log("collection synced");
});
Strain.sync() が初めて実行されたときの出力です。
null
{ affectedRows: 0,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '',
setMaxListeners: [Function],
emit: [Function],
addListener: [Function],
on: [Function],
once: [Function],
removeListener: [Function],
removeAllListeners: [Function],
listeners: [Function] }
collection synced
これで、テーブルが作成されます。サーバーを再起動して Strain.sync() を再度実行すると、次のような出力が得られます。
null
{ affectedRows: 0,
insertId: 0,
serverStatus: 2,
warningCount: 1,
message: '',
setMaxListeners: [Function],
emit: [Function],
addListener: [Function],
on: [Function],
once: [Function],
removeListener: [Function],
removeAllListeners: [Function],
listeners: [Function] }
collection synced
警告カウントは「1」にジャンプしましたが、err は null で、メッセージは空です。
モデルを変更して「deleted_at」などの新しいプロパティを追加し、データを失うことなくテーブルを更新する方法を理解する必要があります。Strain.sync( force: true ) を実行できることはわかっていますが、それではテーブルが削除されてから再作成されます。DataMapper の auto_upgrade 関数と同様に、テーブルを更新しようとしています。
node-orm、またはnodejsで動作するORMでこれを行う方法はありますか?