我正在使用 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 为空,消息为空。
我需要弄清楚如何更改模型并添加新属性,例如“deleted_at”,并在不丢失数据的情况下更新表。我知道我可以做 Strain.sync(force: true),但这会删除表然后重新创建它。我只是想更新表,类似于 DataMapper 的 auto_upgrade 函数。
有没有办法用 node-orm 或任何适用于 nodejs 的 ORM 来做到这一点?