数据访问代码放在哪里?
我现在有几个小的Node.js / Express应用程序正在运行,但我从来没有满意任何数据库访问解决方案。
你认为Node.js MVC网络应用程序的数据库访问代码在哪里?
回来ActiveRecord,一切都被原谅。
在我看来,它真的取决于你正在使用什么样的数据库拱。 在使用MySQL时,我通常在控制器中使用它们,而在使用MongoDB时,我会将它们放入模型中,因为它感觉更自然。 说实话,由于NodeJS更像是一个升级的JavaScript,所以MVC就是关于这个定义。
在考虑MVC和通过NPM的NodeJS结构之后,可以轻松考虑将数据库访问转换为新模块。 我也不完全满意在nodeJS中实现数据库访问的方式。
使用Express时,虽然我们通常应用RESTful接口并使用路由来填充CRUD操作。 我的应用程序从来没有那么大,这样的行为本来可以压倒性地大,但是对于大项目,人们可能想要构建这样的路线
app.get('/api/item', function(req, res){
//access to your API and do database business
});
通过将它们分割成一个名为datbase.js
的数据库访问文件, datbase.js
通过它可以通过主应用程序加载
require('./datbase.js').setupDatabase('localhost', port);
例如,这样的数据库组织者可能看起来像
function setupDatabase(address, port) {
//connect to your datbase
//access to your API and do database business
});
}
module.exports.setupDatabase = setupDatabase;
我个人从未以这种方式尝试过这种方式,但在我看来,这可以帮助您更好地构建访问数据库的方式。 希望这有助于!
编辑作为一个CRUD的实现被请求我张贴一个与Mongoose。 您可以与您正在使用的每个其他数据库进行交换
var application_root = __dirname,
express = require("express"),
path = require("path"),
mongoose = require('mongoose');
var app = express();
mongoose.connect('mongodb://localhost/my_database');
var Item = mongoose.model('Item', new mongoose.Schema({
text: String
}));
app.configure(function(){
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(application_root, "public")));
});
app.get('/', function(req, res){
res.send('Hello World');
});
app.get('/item', function(req, res){
res.render('item', {title: "Your App"});
});
app.get('/api/items', function(req, res){
return Item.find(function(err, items) {
return res.send(items);
});
});
app.get('/api/items/:id', function(req, res){
return Item.findById(req.params.id, function(err, item) {
if (!err) {
return res.send(item);
}
});
});
//etc.
所有这些CRUD操作都适用于您在Backbone应用程序中引入的模型,并将其与MongoDB连接起来。 您可以使用其他软件包通过使用NPM创建mysql查询,并安装nodejs-mysql-native,而不是通往MongoDB的一般路径,而我发现它有时非常有用。
链接地址: http://www.djcxy.com/p/11501.html上一篇: Where to put data access code?
下一篇: Android: Singleton which is used between Activity and Service