Node.js 如何';要求';nodejs中的数据库模式

Node.js 如何';要求';nodejs中的数据库模式,node.js,model,mongoose,require,Node.js,Model,Mongoose,Require,在nodejs中,需要猫鼬模式的最佳方式是什么 最初,我在app.js文件中有这些,但随着更多型号的出现,这些文件变得有点大和笨拙 现在我想将它们移动到models文件夹中,并使用Model=require('./models/Model')将它们导入app.js 如何使模型填充实际模型 (exports=mongoose.model(…)失败并给我一个空白对象;exports.model=mongoose.model(…)要求我执行model.model来访问它——这两种行为都不是所需的) =

在nodejs中,
需要
猫鼬
模式
的最佳方式是什么

最初,我在app.js文件中有这些,但随着更多型号的出现,这些文件变得有点大和笨拙

现在我想将它们移动到
models
文件夹中,并使用
Model=require('./models/Model')
将它们导入app.js

如何使
模型
填充实际模型

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中的相同?

在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
});
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
   };
};
然后,您可以在服务器文件中实例化它,如下所示:

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
});
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
   };
};
---- 然后在文件中放入名为model.js的
models
文件夹(或任何您想要的),您可以这样设置它:

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

在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
});
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
   };
};
然后,您可以在服务器文件中实例化它,如下所示:

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
});
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
   };
};
---- 然后在文件中放入名为model.js的
models
文件夹(或任何您想要的),您可以这样设置它:

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

我不太确定这是如何解决我的问题的。现在我甚至还没有在我的模型上使用方法(非常简单的数据库操作,使用我从
mongoose.model
;比如
User.find()
)返回的值)*编辑了一个问题,以便更具体地说明我在尝试做什么。感谢您的回答:)针对您的问题编辑了更多答案,并删除了其他提示以减少混淆。您想要的是一个更干净的app.js文件,因此我建议您创建一个新文件并将其放置在/lib/目录中,并将该文件包含在app.js中。然后实例化该类并调用其函数,如图所示。您将看到我
返回该类的函数,我创建函数作为您提到的函数的包装器,但调用它们也像UserModel。find(..)但我只是在顶部将var命名为不同的。使用
found
只是一个回调函数,所以我的代码保持异步,这就是你想用Node.js做的,这样你的应用程序就不会被阻塞。我明白了。因此,为了异步db调用,每个调用都必须包装在自己的函数中?我不太确定这如何解决我的问题。现在我甚至还没有在我的模型上使用方法(非常简单的数据库操作,使用我从
mongoose.model
;比如
User.find()
)返回的值)*编辑了一个问题,以便更具体地说明我在尝试做什么。感谢您的回答:)针对您的问题编辑了更多答案,并删除了其他提示以减少混淆。您想要的是一个更干净的app.js文件,因此我建议您创建一个新文件并将其放置在/lib/目录中,并将该文件包含在app.js中。然后实例化该类并调用其函数,如图所示。您将看到我
返回该类的函数,我创建函数作为您提到的函数的包装器,但调用它们也像UserModel。find(..)但我只是在顶部将var命名为不同的。使用
found
只是一个回调函数,所以我的代码保持异步,这就是你想用Node.js做的,这样你的应用程序就不会被阻塞。我明白了。所以为了异步db调用,每个调用都必须包装在自己的函数中?