Node.js是我的第一个后端语言,我正在问自己"我在哪里放置数据库连接信息?".
关于这个问题有很多很好的信息.不幸的是,我所有的例子都是用PHP编写的.我得到了想法,但我没有足够的信心在Node.js中复制它.
在PHP中,您可以将信息放在Web根目录之外的配置文件中,并在需要数据库数据时包含它.
你会如何在Node.js中做到这一点?使用Express.js框架.
到目前为止我有这个:
var express = require('express'), app = express();
var mysql = require('mysql');
app.get('/', function(req,res) {
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'store'
});
var query = connection.query('SELECT * from customers where email = "deelo42@gmail.com"');
query.on('error', function(err) {
throw err;
});
query.on('fields', function(fields) {
console.log('this is fields');
});
query.on('result', function(row) {
var first = row.first_name;
var last = row.last_name;
res.render('index.jade', {
title: "My first name is " + first,
category: "My last name is " + last
});
});
});
app.listen(80, function() {
console.log('we are logged in');
});
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我有一个基本的快速应用程序与1 GET路由.此路由引发了转到数据库并根据电子邮件地址提取信息的功能.
GET路由的顶部是数据库连接信息.我把它放在哪里?我怎么称呼它?如何将其保留在Web根目录之外,并将其包含在PHP中?你能用一个有效的例子告诉我吗?谢谢!
我使用Express Middleware概念,这为我提供了很好的管理文件的灵活性.
我正在写一个详细的答案,其中包括我如何使用app.js中的config params连接到DB.
所以我的app结构看起来像这样:
我如何连接数据库?(我使用的是MongoDB,mongoose是ORM,npm安装mongoose)
var config = require('./config/config');
var mongoose = require("mongoose");
var connect = function(){
var options = {
server: {
socketOptions:{
keepAlive : 1
}
}
};
mongoose.connect(config.db,options);
};
connect();
Run Code Online (Sandbox Code Playgroud)
在config文件夹下我还有'env'文件夹,它将环境相关配置存储在单独的文件中,例如development.js,test.js,production.js
现在顾名思义,development.js存储与我的开发环境相关的配置参数,同样适用于测试和生产的情况.现在,如果您希望您可以进行更多配置设置,例如'staging'等.
var path = require("path");
var extend = require("util")._extend;
var development = require("./env/development");
var test = require("./env/test");
var production = require("./env/production");
var defaults = {
root: path.normalize(__dirname + '/..')
};
module.exports = {
development: extend(development,defaults),
test: extend(test,defaults),
production: extend(production,defaults)
}[process.env.NODE_ENV || "development"]
Run Code Online (Sandbox Code Playgroud)
module.exports = {
db: 'mongodb://localhost/mongoExpress_test'
};
Run Code Online (Sandbox Code Playgroud)
现在,您可以通过将URL分解为用户名,密码,端口,数据库,主机名来使其更具描述性.
有关更多详细信息,请查看我的repo,您可以在其中找到此实现,实际上现在在我的所有项目中,我使用相同的配置.
如果你更感兴趣那么看看Mean.js和Mean.io,他们有更好的方法来管理所有这些事情.如果你是初学者,我会建议保持简单并让事情顺利进行,一旦你感到舒服,你就可以自己动手.干杯
| 归档时间: |
|
| 查看次数: |
6799 次 |
| 最近记录: |