1

nodejsrequireでマングースに最適な方法は何ですか?Schema

もともと私はこれらを app.js ファイル内に持っていましたが、モデルが増えると少し大きくなり扱いにくくなっています。

今、それらをmodelsフォルダーに移動し、それらを使用Model = require('./models/model')して app.js にインポートしたい

Model実際のモデルが取り込まれるようにするにはどうすればよいですか?

(exports = mongoose.model(...)失敗して空白のオブジェクトが表示されます。exports.model = mongoose.model(...)アクセスするには Model.model を実行する必要があります。これらはどちらも望ましい動作ではありません)

===

編集1

だから基本的に私は取った

var mongoose = require('mongoose');
var Schema = mongoose.Schema, ObjectId = Schema.ObjectId;

var UserSchema = new Schema({
  username: String,
  password: String,
  first_name: String,
  last_name: String,
  email: String
});
User = mongoose.model('User', UserSchema);

入れて./models/user.js

これをapp.jsに入れるのと同じようにするにはどうすればよいですか?

4

1 に答える 1

1

app.js サーバー ファイルに、次のように model.js ファイルを含めます。

var Model = require('./models/model');  //whatever you want to call it

次に、サーバー ファイルで次のようにインスタンス化できます。

//Initiate the  Business API endpoints
var model = new Model(mq, siteConf);
model.getUser(id, function() {
    // handle result
});

----

次に、modelsmodel.js (または必要なもの) という名前のフォルダーにファイルを配置すると、次のように設定できます。

var mongoose = require('mongoose'); 

//MongoDB schemas
var Schema = mongoose.Schema;

var User = new Schema({
  username: String,
  password: String,
  first_name: String,
  last_name: String,
  email: String
});
var UserModel = mongoose.model('User', User);

// your other objects defined ...


module.exports = function(mq, siteConf) {
//MongoDB
mongoose.connect(siteConf.mongoDbUrl);


// ------------------------
// READ API
// ------------------------

// Returns a user by ID
function getUser(id, found) {
    console.log("find user by id: " + id);
    UserModel.findById(id, found);
}

// Returns one user matching the given criteria
// mainly used to match against email/login during login
function getUserByCriteria(criteria, found) {
    console.log("find user by criteria: " + JSON.stringify(criteria));
    UserModel.findOne(criteria, found);
}



    // more functions for your app ...



return {
    'getUser': getUser, 
            'getUserByCriteria': getUserByCriteria
   };
};
于 2012-07-27T04:09:21.403 に答える