2016-10-10 128 views
-1

我是Node.js的新手,我有一些問題。我正在實施簡單的聊天應用程序,並在ordor中執行此操作,以使用ExpressJS + Nodejs + Sockert.io軟件包。 這裏是我的UserServive.js模塊出口。 Node.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; 

是可以接受的出口對象實例?或者我應該讓所有methids靜態像這樣的代碼:

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; 

回答

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); 
     }); 
    } 
}; 
0

Node.js開發人員不喜歡把東西放在全局範圍內。例如,這是我要做的事:

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

    return MyClass; 
} 

然後在主文件:

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

感謝FO您的回答!我會記住它。 –

0

實際上,你可以在你的UserService不需要。

export default UserService; 

然後

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