Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js DRY与MySQL客户端_Mysql_Node.js_Coffeescript_Express - Fatal编程技术网

Node.js DRY与MySQL客户端

Node.js DRY与MySQL客户端,mysql,node.js,coffeescript,express,Mysql,Node.js,Coffeescript,Express,所以这里有一个简单的问题。基本上,我正在制作一个连接到MySQL服务器的express应用程序。很简单。但是如何停止在文件之间添加所有连接代码,以便在更改密码或数据库时不必更改多个文件 例如: app.coffee client = mysql.createClient user: config.db.user, password: config.db.pass app.get '/', routes.index client = mysql.createClient user:

所以这里有一个简单的问题。基本上,我正在制作一个连接到MySQL服务器的express应用程序。很简单。但是如何停止在文件之间添加所有连接代码,以便在更改密码或数据库时不必更改多个文件

例如:

app.coffee

client = mysql.createClient
  user: config.db.user,
  password: config.db.pass

app.get '/', routes.index
client = mysql.createClient
  user: config.db.user,
  password: config.db.pass

exports.index = (req, res) ->
  res.render 'index'
routes/index.coffee

client = mysql.createClient
  user: config.db.user,
  password: config.db.pass

app.get '/', routes.index
client = mysql.createClient
  user: config.db.user,
  password: config.db.pass

exports.index = (req, res) ->
  res.render 'index'
我试图创建一个名为
lib/mysql.coffee
的文件,它如下所示:

config = require '../config'
mysql = require 'mysql'

module.exports = ( ->
  mysql.createClient
    host: config.db.host
    user: config.db.user
    password: config.db.pass
    database: config.db.name
)
所以在应用程序中,我可以:

mysql = require './lib/mysql'
mysql.query 'SHOW TABLES', (err,r,f) ->
    console.log err
但它一直在给予:

TypeError: Object function () {
    return mysql.createClient({
      host: config.db.host,
      user: config.db.user,
      password: config.db.pass,
      database: config.db.name
    });
  } has no method 'query'

模块:

我的节点fu没有那么强大,但是:

module.exports = ( ->
  mysql.createClient
    ...
)
正在导出返回MySQL连接的函数。您的错误消息:

TypeError: Object function () {
    return mysql.createClient({
      ...
    });
  } has no method 'query'
说得同样多;也就是说,
mysql
是一个没有
query
方法的函数对象

你可以继续做你正在做的事情,然后说:

mysql = require './lib/mysql'
db    = mysql()
db.query 'SHOW TABLES', (err,r,f) ->
  console.log err
或者您可以导出
connect
方法:

module.exports =
  connect: ->
    mysql.createClient(...)
并使用:

mysql = require './lib/mysql'
db    = mysql.connect()
db.query ...

我的身体没有那么强壮,但是:

module.exports = ( ->
  mysql.createClient
    ...
)
正在导出返回MySQL连接的函数。您的错误消息:

TypeError: Object function () {
    return mysql.createClient({
      ...
    });
  } has no method 'query'
说得同样多;也就是说,
mysql
是一个没有
query
方法的函数对象

你可以继续做你正在做的事情,然后说:

mysql = require './lib/mysql'
db    = mysql()
db.query 'SHOW TABLES', (err,r,f) ->
  console.log err
或者您可以导出
connect
方法:

module.exports =
  connect: ->
    mysql.createClient(...)
并使用:

mysql = require './lib/mysql'
db    = mysql.connect()
db.query ...

现在您正在导出函数,并且没有返回值

显然,您可以在CoffeeScript中使用
do
关键字创建一个自执行函数,因此请尝试以下操作:

module.exports = do ( ->
  mysql.createClient
    host: config.db.host
    user: config.db.user
    password: config.db.pass
    database: config.db.name
)

或者执行什么操作并调用导出的函数。无论如何,这会更干净。

现在您正在导出函数,并且没有返回值

显然,您可以在CoffeeScript中使用
do
关键字创建一个自执行函数,因此请尝试以下操作:

module.exports = do ( ->
  mysql.createClient
    host: config.db.host
    user: config.db.user
    password: config.db.pass
    database: config.db.name
)
或者执行什么操作并调用导出的函数。无论如何,那会更干净