从其他文件获取数据库信息

我有3个不同的文件叫做:app.js,ServerManager.js和Users.js。

为了开始一切,我运行了运行我的ServerManager的app.js。

在App.js中运行ServerManager:

var ServerManager = require('./modules/ServerManager.js'); var serverManager = new ServerManager({ app: app, path: __dirname }); 

然后serverManager被调用,我可以做的东西在那里,然后我想从ServerManager的东西发送到Users.js,但它似乎不起作用。

ServerManager.js

 var config = require('../config.js'); var express = require('express'); var colors = require('colors'); var DatabaseManager = require('../modules/DatabaseManager.js'); var RouteManager = require('../modules/RouteManager.js'); var Users = require('../data/users.js'); module.exports = function(options){ return new ServerManager(options); } var ServerManager = function (options) { var self = this; this.app = options.app; this.options = options; this.dbManager = new DatabaseManager(); this.dbManager.use(); this.RoutesManager = new RouteManager(this.app); this.RoutesManager.use(); this.usersManager = new Users(this); } ServerManager.prototype.getDatabase = function () { return this.dbManager(); } 

Users.js – 用代码标记它找不到。

 module.exports = function (ServerManager) { return new Users(ServerManager); }; var Users = function (ServerManager) { var self = this; this.serverManager = ServerManager; }; Users.prototype.createUser = function (username, email, password) { this.serverManager.getDatabase(); <--- Can't find getDatabase() }; 

请不要没有解释,downvote,谢谢!

我认为你应该改变你的Users.js代码:

 // This is the Users object // and this function is its constructor // that can create users instances var Users = function (ServerManager) { var self = this; this.serverManager = ServerManager; }; // We define a method for the user object Users.prototype.createUser = function (username, email, password) { this.serverManager.getDatabase(); }; // We export the user object module.exports = Users; 

现在你做

 var Users = require('../data/users.js'); 

你得到了用户对象。 所以,你可以做new Users(...)

ServerManager也要做同样的事情。

如果您想按照原样使用代码,则不必在导入的对象上使用new关键字。