我有一個模塊調用UserProvider看起來像這樣與node.js的嵌套模塊
var UserProvider = function(db) { ... }
UserProvider.prototype.createUser = function(email, password, callback) { ... }
UserProvider.prototype.findUserByEmail = function(email, callback) { ... }
...
exports.UserProvider = UserProvider;
而另一個名爲ModelProvider模塊,看起來像這樣
var UserProvider = require('./user').UserProvider;
var ModelProvider = function() {
...
this.User = new UserProvider(db);
}
exports.ModelProvider = ModelProvider;
但行this.User = new UserProvider(db);
不允許我訪問包含ModelProvider
模塊的主模塊中的UserProvider
對象。
當我嘗試調用此:
var ModelProvider = require('./model/model').ModelProvider;
var Model = new ModelProvider();
Model.User.findUserByEmail(email, function() {...});
它提供了以下錯誤:
TypeError: Object function Model(doc, fields, skipId) {
if (!(this instanceof Model))
return new Model(doc, fields, skipId);
model.call(this, doc, fields, skipId);
} has no method 'findUserByEmail'
我假設有,我很想念揭露下來一些JavaScript掛羊頭賣狗肉?
謝謝!
我認爲你需要要求主模塊中的用戶模塊,以及或者還加上' UserProvider'到模型模塊中的'exports'對象。 –
正確,但實例化用戶模型的實例取決於數據庫連接對象,所以我希望Model模塊在其啓動時對其進行初始化,然後將其公開。 – grivescorbett
因此假設你在你的主模塊中有類似'var model = new ModelProvider()'的東西,如果你訪問'model.User',你會得到什麼? –