Използвам 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", но грешката е нула и съобщението е празно.
Трябва да разбера как мога да променя модела и да добавя ново свойство, като "deleted_at", и да актуализирам таблицата БЕЗ загуба на данни. Знам, че мога да направя Strain.sync( force: true), но това ще изпусне таблицата и ще я създаде отново. Просто гледам да актуализирам таблицата, подобно на функцията auto_upgrade на DataMapper.
Има ли някакъв начин да направите това с node-orm или който и да е ORM, който работи с nodejs?