Node.js 如何';要求';nodejs中的数据库模式
在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来访问它——这两种行为都不是所需的) =
需要
猫鼬模式
的最佳方式是什么
最初,我在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调用,每个调用都必须包装在自己的函数中?