2015-04-02 73 views
3

這個automigrate.js腳本用於正常工作,但現在它掛起而沒有退出新的strongloop版本。Strongloop Loopback dataSource.disconnect不再斷開連接?

Strongloop人,改變了這個不再退出?試圖設置自動部署,但這是一個阻礙。

var path = require('path'); 
var app = require(path.resolve(__dirname, '../server')); 
var _ = require('lodash'); 

// fix for (node) warning: possible EventEmitter memory leak detected 
require('events').EventEmitter.prototype._maxListeners = 100; 

var dataSource = app.dataSources.mysqlDB; 

dataSource.autoupdate([ 
    'Person' 
    ], function(err) { 

    if (err) { 
    return console.log(err); 
    } 

    console.log('closing pool'); // this echoes but... 
    dataSource.disconnect();  // ...script never exits 

}); 
+0

我不完全確定你是什麼意思的「不再退出」,但如果這是你有的所有代碼,那麼沒有任何事情是爲了保持代碼運行。 ['dataSource.disconnect()'方法](https://github.com/strongloop/loopback-datasource-juggler/blob/9083370e175c3d07ed19facdc709c5d2c987e10e/lib/datasource.js#L1745-L1757)只是調用mysql連接器的'disconnect( )'方法,該方法又調用mysql庫的['end()'方法](https://github.com/strongloop/loopback-connector-mysql/blob/2a249beb77ecd3cb24c38071ab22629e290a1353/lib/mysql.js#L1288-L1295) 。 – jakerella 2015-04-03 13:36:45

+0

我的意思是腳本掛起,並不象以前那樣以0退出,所以當通過結構或通過ssh運行以實現自動化時(這個文件之後的下一個命令永遠不會運行),它是沒用的。每個strongloop的人可能是由於最新的節點MySQL驅動程序不好玩。 – Brian 2015-04-06 21:30:59

+0

啊,好吧,我很高興你已經聯繫了支持人員,不幸的是我們處於節點DB驅動程序的意外之中,但我們無法做到這一點。請更新,如果它得到解決! – jakerella 2015-04-07 12:52:59

回答

1

您需要在連接數據源後斷開連接。試試這個:

var path = require('path'); 
var app = require(path.join(__dirname,"..","server","server")); 
var ds = app.datasources.mysql; 
ds.once('connected', function() { 
    ds.disconnect(); 
    console.log("here"); 
});