Я использую 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?