标签: mysqljs

node.js与async/await的mysql池连接

有没有办法使用pool.getConnection()mysqljs/mysql lib中的async/ await语法?

我们的想法是有一个方法返回一个连接,该连接可以在释放它之前在具有各种外键约束(顺序查询)的写查询中传递,同时可能从池中获得进一步的连接,以便进行各种读取查询(平行).

mysql node.js async-await mysqljs

5
推荐指数
2
解决办法
8322
查看次数

在整个 Express 应用程序中实现单个数据库池的正确方法

注意:此问题主要与节点中的单例对象有关,而不是与数据库池有关

我正在使用 mysqljs 节点模块进行数据库连接构建一个expressjs 应用程序。我想创建一个可以在整个应用程序中重用的单个池对象(对于不同的模型等)。我想知道在整个 Express 应用程序中使用单个对象实例的正确方法是什么

我见过很多例子,人们像这样创建 db.js 文件或 pool.js 文件,并在需要的地方需要它

// db.js
var mysql = require('mysql');
var pool;
module.exports = {
    getPool: function () {
      if (pool) return pool;
      pool = mysql.createPool(dbConfig);
      return pool;
    }
};

// app.js
var pool = require('pool').getPool();
pool.query('SELECT * FROM users');
Run Code Online (Sandbox Code Playgroud)

但是我觉得这仍然不是正确的方法,因为您每次需要该对象时都依赖 Nodejs 缓存返回相同的实例。如果节点最终加载代码两次,您最终会得到两个池,例如

const poolA = require('./pool').getPool();
const poolB = require('./POOL').getPool(); // resolves to same file but node will not get result from cache

console.log(poolA === poolB); // false
Run Code Online (Sandbox Code Playgroud)

从我读过的大多数内容来看,由于这种行为,通常不建议在节点应用程序中使用单例对象,但这似乎是快速应用程序的常见用例。所以我想知道人们如何在应用程序的生命周期中创建他们的单一池?

注意:我目前正在做的是在应用程序根目录中实例化池,然后将该实例作为构造函数参数传递,但我也不喜欢这样做

javascript connection-pooling node.js express mysqljs

5
推荐指数
1
解决办法
1816
查看次数

节点 Mysql 转义 - Mysql.Escape() / Mysql.EscapeId()

我正在使用 mysql-node: https: //github.com/mysqljs/mysqlMysql.Escape()但我对默认清理、 vs和vsMysql.EscapeId()的使用有点困惑。文档说????

默认清理

当您将对象传递给 .escape() 或 .query() 时,.escapeId() 用于避免对象键中的 SQL 注入。

我看到术语“对象”,那么这是否意味着我仍然应该转义这样的查询?

UPDATE table SET updated_at = userInput WHERE name = userInput

Mysql.Escape() 与 Mysql.EscapeId()
这两个函数有什么区别。文档说 mysql.escape 使用 mysql.escapeId。我知道它们都会清理输入,但是是否存在使用其中之一的情况?

?与??
文档中???可以互换使用。它们的意思是一样的吗?

node.js node-mysql mysqljs

3
推荐指数
1
解决办法
5247
查看次数

如何在POST主体的基础上创建动态插入语句

body 对象中的属性数量根据值的不同而不同user_type

如果user_typejob_seeker,则正文对象具有以下属性 --> 用户名、用户类型、姓名、电子邮件、密码、简历、简历日期时间、薪水期望。我已经创建了这样的硬编码插入语句 -->

insert into users (username, user_type, name, email, password, resume, resume_date_time, salary_expectation) values (?, ?, ?, ?, ?, ?, ?, ?);

如果user_type雇主,则主体对象具有以下属性 --> 用户名、用户类型、姓名、电子邮件、密码、公司名称、公司个人资料。本例的插入语句是这样的 -->

insert into users (username, user_type, name, email, password, company_name, company_profile) values (?, ?, ?, ?, ?, ?, ?);

那么,如何根据不同的编号创建动态插入查询。POST 请求正文中的属性?

mysql node.js mysqljs

2
推荐指数
1
解决办法
4758
查看次数