我在共享托管平台上,并希望限制我的应用程序中的查询,以便如果总执行时间超过一定量的可变时间段,那么我可以让应用程序冷却,然后稍后恢复.
要做到这一点,我想知道我的每个查询实时采取多长时间并在应用程序中管理它,而不是通过外部进行分析.
我已经在PHP中看到了在查询之前和之后记录时间的示例(甚至phpMyAdmin都这样做),但这在NodeJS或异步运行查询的任何内容中都不起作用.
所以问题是:我如何在NodeJS中获取查询的实际执行时间?
作为参考,我使用这个模块来查询MySQL数据库:https://github.com/felixge/node-mysql/
如果我有如下查询:
var queryString = "INSERT INTO pid SET title = '" + randomTitle + "', poc = '" + random + "';"
connection.query(queryString, function(err, rows, fields) {
...(do something here)
});
Run Code Online (Sandbox Code Playgroud)
,有没有一种方法可以检索刚刚插入的行的信息而无需执行新查询(在我的特殊情况下,我需要自动生成的主键值)。
例如,是否可以将构造与“查询”对象(如下)一起使用,然后再使用query.on回调之一来检索有关刚插入的行的信息?
var query = connection.query(queryString, function(err, rows, fields) {
query.on('fields', function(fields) {
... get the field information?
});
query.on('result', function(row) {
.. get the field information?
});
});
Run Code Online (Sandbox Code Playgroud)
如果不通过查询回调,还有其他方法吗?感谢您的任何回复!
这是我目前的javascript。
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'codify',
port: '8889'
})
connection.connect();
//var querydata = +"'"+data.RegUsername + "','"+data.RegPassword+"'"
connection.query("INSERT INTO Codify (UsernameDB , PasswordDB) VALUES ?", data.RegUsername,+","+ data.Regpassword , function(err,rows,fields){
if (err) throw err;
})
});*/
Run Code Online (Sandbox Code Playgroud)
该查询导致错误,我在做什么错?
我挺不理解如何connectionLimit在mysql的模块工作。
我通过以下方式创建了connectionPool:
var connPool = mysql.createPool({
host: config.get('database.host'),
user: config.get('database.user'),
password: config.get('database.password'),
database: config.get('database.dbname'),
connectionLimit: 5
});
Run Code Online (Sandbox Code Playgroud)
现在,极限5在这里做什么?
我的想法是:
假设有5个用户使用我的REST api从表中选择数据。现在,在我的api中,我从pool获得连接,进行处理,然后释放连接。
因此,现在假设有12个用户同时向该api发送请求。因此,它们中的前5个应该访问数据,而其他7个将获得错误/无响应。他们将不得不再次请求以获取数据。
是这样还是其他?
我正在使用 mysql 连接池来创建连接。代码如下所示。
var pool = mysql.createPool(connectionProps);
Run Code Online (Sandbox Code Playgroud)
通过访问池,即使连接不成功,我也会得到一个对象。我通过启动和停止 mysql 检查了它。
我想要的是,我需要检查连接是否成功,如下所示。
if(pool){ // mysql is started && connected successfully.
console.log('Connection Success');
doSomething();
}else{
console.log('Cant connect to db, Check ur db connection');
}
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西。那么我们如何使用 mysql 池对象来做到这一点呢?有人可以帮帮我吗?
谢谢 n 问候
我正在使用 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。我知道它们都会清理输入,但是是否存在使用其中之一的情况?
?与??
文档中?和??可以互换使用。它们的意思是一样的吗?
我在Windows 7 cmd提示,,,我试图通过以下方式安装: npm install node-mysql
我得到这个:
C:\Program Files\nodejs>npm install node-mysql
npm http GET https://registry.npmjs.org/node-mysql
npm http 404 https://registry.npmjs.org/node-mysql
npm ERR! 404 'node-mysql' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404
npm ERR! 404 Maybe try 'npm search mysql'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.
npm ERR! System Windows_NT …Run Code Online (Sandbox Code Playgroud) 我收到这样一个数组:
[1,2,3,4,5];
Run Code Online (Sandbox Code Playgroud)
我需要实现一个包含许多ORs in WHERE子句的查询.我从我的数组中获取值.它看起来像这样:
SELECT foo, bar FROM tbl WHERE (a.bar = 1 OR a.bar = 2 OR a.bar = 3 ... and so on)
Run Code Online (Sandbox Code Playgroud)
我怎样才能WHERE在node-mysql中创建这样的部分?或者如何传递参数?
我有以下代码.我是nodejs&js的新手
我想在1. log中获取值但是我得到了未定义.只有2.日志输出到日志.
我从回调和 https://github.com/felixge/node-mysql读取nodeJS返回值,但没有关于返回值的示例.
我不知道如何在node-mysql页面中使用给定示例的return语句.
exports.location_internal = function (req, res) {
var r = getExternalLocation(2);
// 1. log
console.log(r);
res.send( r);
}
var getExternalLocation = function (id) {
pool.getConnection(function(err, connection){
if(err) throw err;
var response = {};
connection.query( "select * from external_geo_units where geo_unit_id = "+id, function(err, rows){
if(err) throw err;
response.data= rows;
// 2. log
console.log(response);
return response;
});
connection.release();
});
};
Node.js,MySQL(使用
node-mysql library连接)
我可以有one argument 'aaa'或two arguments 'aaa' and 'bbb'。
UPDATE user SET email = 'aaa' WHERE uid = 'xxx';
UPDATE user SET email = 'aaa', password = 'bbb' WHERE uid = 'xxx';
Run Code Online (Sandbox Code Playgroud)
如何使用一个查询来克服上述情况?像下面...
var sql = "UPDATE user SET email = ?, password = ? WHERE uid = ?;"
dbclient.query(sql, [email, password, uid], function (err, results) {
...
});
Run Code Online (Sandbox Code Playgroud)
如果有两个参数defined,则变量sql为:
sql = "UPDATE user SET email = …Run Code Online (Sandbox Code Playgroud)node-mysql ×10
node.js ×8
mysql ×7
javascript ×2
express ×1
insert ×1
mysqljs ×1
optimization ×1
windows-7 ×1