模块导出。 Node.js的

时间:2016-10-10 11:04:12

标签: javascript node.js

我是Node.js的新手,我有一些问题。我正在实现简单的聊天应用程序,并在ordor中这样做我正在使用ExpressJS + Nodejs + Sockert.io包。 这是我的UserServive.js

var db = require('../db')

class UserService {

    findUserByNick(nick, callback) {
        let userCollection = db.get('usercollection')
        userCollection.findOne({username: nick}, (error, data) => {
            callback(error, data);
        });
    }

    findUserByEmail(email, callback) {
        let userCollection = db.get('usercollection')
        userCollection.findOne({email: nick}, (error, data) => {
            callback(error, data);
        });
    }
}

var us = new UserService();
module.exports = us;

导出对象实例是否可以接受?或者我应该像所有代码一样使所有的methid静止:

class tokens_controller extends require('./controller_utils') {
    static check_token(token_data, callback) {
        if (this.validator(token_data, valid_templates.tokens.check_token, callback)) {
            this.get_token_info(token_data.access_token, (get_token_info_err, get_token_info_result)=> {
                TOKENS_MODEL.update({token: token_data.access_token}, (update_error, update_result)=> {
                    console.log(update_result);
                    if (update_error) {
                        callback(update_error, null);
                    }
                    else {
                        USERS_MODEL.find_users({
                            find: [{user_id: update_result.user_id}],
                            nots: ['password']
                        }, (find_users_error, find_users_result)=> {
                            if (find_users_error) {
                                callback(find_users_error, null);
                            }
                            else {
                                let user = find_users_result[0];
                                let result = {user: user, token: update_result};
                                callback(null, result);
                            }

                        });
                    }
                });
            }, callback);

        }
    }
}
module.exports = tokens_controller;

3 个答案:

答案 0 :(得分:0)

如果它只是一项服务,你不需要使用this或其他东西,你可以省略类行为,只导出一个对象。

var db = require('../db')

module.exports = {

    findUserByNick: function(nick, callback) {
        let userCollection = db.get('usercollection')
        userCollection.findOne({username: nick}, (error, data) => {
            callback(error, data);
        });
    },

    findUserByEmail: function(email, callback) {
        let userCollection = db.get('usercollection')
        userCollection.findOne({email: nick}, (error, data) => {
            callback(error, data);
        });
    }
};

答案 1 :(得分:0)

Node.js开发人员不喜欢把东西放在全局范围内。这就是我如何做到这一点:

module.exports = function() {
    class MyClass {
        // Stuff
    }

    return MyClass;
}

然后在主文件中:

const MyClass = require("./MyClass.js")();

答案 2 :(得分:0)

您实际上可以在UserService中执行。

export default UserService;

然后

import UserService from './userService';
new UserService()