2016-06-17 93 views
0

如何使用節點js跟蹤表中的更改?爲了連接我使用Sequelize。 如果有任何更改,任務是監視用戶數據更改並將emmit事件發送到前端。我使用套接字io,並且不會使用超時。有沒有辦法跟蹤事件,如'表字段xxx其中user_id = yyy被更改',並獲得新的字段值。表nodejs中的跟蹤更改

+0

這將在很大程度上取決於數據庫,並使用該數據庫TEH API。如果數據庫不允許,Node.js只能這樣做。 – DrakaSAN

+0

Sequelinze,MySQL。也許還有其他的ORM,可以解決這個問題嗎? –

+0

數據是由node.js通過Sequelize還是通過其他程序/腳本添加/編輯的? – DrakaSAN

回答

0

嘗試在續集中使用鉤子。 在你的conf/connection.js中,你可以定義全局鉤子。通過這種方式,你可以攔截一切。

掛鉤定義:

const hooks = { 
beforeBulkUpdate: (options) => { 
    options.individualHooks = true; 
    return; 
}, 
beforeBulkDestroy: (options) => { 
    options.individualHooks = true; 
    return; 
}, 
beforeCreate: (instance, options) => { 
    sails.log.info(("%s %s"), 'beforeCreate', instance.$modelOptions.tableName); 

    return; 
}, 
beforeUpdate: (instance, options) => { 
    sails.log.info(("%s %s"), 'beforeUpdate', instance.$modelOptions.tableName); 

    var payload = { 
     before: instance._previousDataValues, 
     after: instance.dataValues, 
     changed: instance._changed 
    }; 
    ----> here you can write on the web socket 
    return; 
}, 
beforeDestroy: (instance, options) => { 
    sails.log.info(("%s %s"), 'beforeDestroy', instance.$modelOptions.tableName); 

    return; 
} 

} 

連接:

mydb: { 
    user: 'myuser', 
    password: 'mypassword', 
    database: 'mydatabase', 
    options: { 
     dialect: 'mysql', 
     host: 'myhost', 
     logging: true, 
     define: { 
      hooks: hooks 
     } 
    } 
    }