0
// connections.js
...
module.exports = {
conn: {
mongodb: {
connect: function() {throw ...},
disconnect: function() {throw ...},
getState: function() {throw...}
},
mysql: {
connect: function() {throw ...},
disconnect: function() {throw ...},
getState: function() {throw ...}
}
},
drivers: {
mongoose: mongoose,
mysql: mysql
},
states: connectionStates,
setup: function(config, cb) {
// provides concrete implementations of connect(), discconnect(),
// getState(), sets up listeners to relay connection events
this.conn.mongodb = setupMongo(config.mongodb);
this.conn.mysql = setupSql(config.mysql);
...
cb();
}
};
現在,如果我有這樣的:的Node.js:模塊系統,對象引用
// main.js
var connections = require(__dirname + '/connections'),
conn = connections.conn,
db = conn.mongodb;
// connectionections.setup() not been called yet
exports.foo = function() {
// connections.setup() already been called before this point
db.connect(...); // fails - error thrown - using the abstract function
conn.mongodb.connect(...); // works
}
爲什麼第一個失敗? db
var應該包含對connections.conn.mongodb
的引用?至少,我希望既可以工作也可以不工作。有什麼區別可以讓第一個失敗,第二個成功?謝謝
是的,db!== conn.mongodb正如你所說。我試圖理解:「setup()在不同的作用域中調用,db/conn.mongodb在安裝程序調用時發生分歧(寫入時有副本)」。如果一個是對另一個的引用,它們是如何分歧的? – Colin