我想監視查詢在我的API數據庫上花費的時間。我創建了以下函數,使用書架信號,Bookshelf插件。 :跟蹤數據庫查詢時間 - Bookshelf/knex
bookshelf.on('fetching',() => {
server.app.fetching = new Date().valueOf();
});
bookshelf.on('counting',() => {
server.app.fetching = new Date().valueOf();
});
bookshelf.on('fetched',() => {
server.statsd.gauge('db_query', new Date().valueOf() - server.app.fetching);
});
......這樣我就可以檢索到剛獲取/計數之前和之後的時間;我做了同樣的刪除刪除和保存保存。
我覺得我無法理解的是獲取和取出都應該被觸發...當我試着看時獲取並取出被觸發時,基本上結束了與此:
'fetching event A'
'fetching event B'
'fetching event C'
'fetched event C'
'fetched event B'
'fetched event A'
導致計時器不經意地返回錯誤的值,你有任何線索/線索嗎?
我也看到可以在Knex上觸發'查詢'事件,並且認爲使用這個作爲替代解決方案。然而,它似乎只有當我指定我查詢表,即作品:
knex('whatever_table').on('query',() => {///});
使其成爲行不通的情況下,我想在每一個模型應用的事件處理程序... 我想我應該堅持使用Bookshelf,但我怎麼處理事件的處理方式?
預先感謝您!
發送DB時間我不知道knex.on()可以實際使用,使一切更容易! 我把我用於特殊情況的代碼放在回覆中:) – smgr