2017-06-05 19 views
0

Expressアプリケーションで私が理解できない奇妙な動作があります。私はいくつかのスキーマといくつかの機能を含むユーザーモデルファイル(user.js)を持っています。ルートファイル(users.js)からファイルを要求すると、私はスキーマにアクセスできますが、 'myFuncは関数ではありません。'を返すときに関数を呼び出すことはできません。これは、複数のスキーマがある場合にのみ発生し、1つのスキーマの場合はすべてが完璧です。あなたは私に理解してもらえますか?機能が定義されていません - module.exports - Express

この1つ返し:userModels.User.addUser関数ない

user.jsの

... 
const UserModels = module.exports = { 
    'User': mongoose.model('User', UserSchema), 
    'Token': mongoose.model('Token', TokenSchema) 
} 

module.exports.addUser = function(newUser, callback){ 
    console.log('test'); 
} 
... 

users.js

... 
userModels.User.addUser(newUser, function(err, user){ 
    if(err){ 
     res.json({success: false, msg: "Failed to register."}); 
    } else{ 
     res.json({success: true, msg: 'User has been registered'}); 
    } 
}); 
... 

この1つは通過:

... 

const User = module.exports = mongoose.model('User', UserSchema); 

module.exports.addUser = function(newUser, callback){ 
    console.log('test'); 
} 

... 

User.addUser(newUser, function(err, user){ 
    if(err){ 
     res.json({success: false, msg: "Failed to register."}); 
    } else{ 
     res.json({success: true, msg: 'User has been registered'}); 
    } 
}); 

... 
+0

'userModels'がusers.jsで設定/定義されている方法は? user.jsの他の場所で 'module.exports'を再割り当てしますか? – mscdex

+0

@mscdex私はそれをこのように定義します。const userModels = require( "../ models/user"); user.jsでは質問に貼り付けたのは私だけです。 –

答えて

0

だから私は解決した

user.jsの

UserSchema.statics.addUser = function(newUser, callback){ 

    console.log('test'); 

} 

module.exports = { 
    'User': mongoose.model('User', UserSchema), 
    'Token': mongoose.model('Token', TokenSchema) 
}; 

そしてusers.jsに、私は両方のモデルにアクセスすることができ、それは、このようなメソッドです:

const UserModels = require("../models/user"); 

UserModels.User; 
UserModels.Token; 
UserModels.User.AddUser(); 

おかげ以下の問題を修正しました。

関連する問題