目前在服务器上使用 NodeJS、Express、Socket.io 和 node-mysql。目前,服务器上的其中一项功能出现问题,根本不返回任何数据。我在我的尽头机智试图弄清楚这一点。
功能代码;
它应该返回“c”,但不起作用。console.log 实际上显示了 ID 和用户名。
function LOGIN_USER(a,b) {
// a = username
// b = password
var c = [];
connection.query("SELECT ID FROM GAME_PLAYER WHERE USR = '" + a + "' AND PWD = '" + b + "'", function(err,rows,field) {
if (err) throw err;
for (var i in rows) {
c.ID = rows[i].ID;
c.USR = a;
}
console.log(c.ID + " " + c.USR);
return c;
});
}
Run Code Online (Sandbox Code Playgroud)
其他代码。
socket.on('login user', function(data) {
var c; …Run Code Online (Sandbox Code Playgroud) 我正在使用 knex.js 编写查询,但我被 orWhere 困住了。
我需要这样的查询:
select
count(*)
from
`Project`
where
`Project`.`createdAt` >= '2019-11-12'
and
`Project`.`createdAt` <= '2020-11-19'
and
((`Project`.`productType` = 1)
or
(`Project`.`productType` = 2))
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这就是我得到的:
select
count(*)
from
`Project`
where
`Project`.`createdAt` >= '2019-11-12'
and
`Project`.`createdAt` <= '2020-11-19'
or
(`Project`.`productType` = 1)
or
(`Project`.`productType` = 2)
Run Code Online (Sandbox Code Playgroud)
or请注意,我想要用两个 'and来代替第一个or
这是代码:
builder.count('*')
.from('Project')
.where('Project.createdAt', '>=', '2019-11-12')
.where('Project.createdAt', '<=', '2019-11-19')
.orWhere({'Project.productType': 1})
.orWhere({'Project.productType': 2})
Run Code Online (Sandbox Code Playgroud)
将不胜感激任何帮助
我是Node.js的初学者,可以将MySQL用作全局变量吗?
我有一个db_helper.js,其中包含以下代码:
global.client = require('mysql').createConnection({
user: '__mysqluser__',
password: '__mysqlpass__',
database: '__mysqldb__',
timezone: '-03:00'
});
global.client.connect();
Run Code Online (Sandbox Code Playgroud)
在我的main.js上,我只是做一个:
require('db_helper');
Run Code Online (Sandbox Code Playgroud)
然后在其他js文件上,每当我需要更新或选择时,我只需调用:
global.client(query, data);
Run Code Online (Sandbox Code Playgroud)
我还没有看到这样的代码,但是它可以按预期工作,但是在重新加载页面时,我有时会遇到随机崩溃。
这样使用可以吗?我的崩溃与我连接到数据库的方式有关吗?
我认为这是相关的,因为崩溃发生时是因为MySQL无法返回数据,但解析结果时发生了崩溃,例如:
global.client.query(query, function(err, results, fields) {
if (err) throw err;
if (results && Object.prototype.toString.call(results) === '[object Array]') {
var j = result[0].data;
}
}
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,var j具有我期望的值,但是当节点崩溃时,尽管它以前检查过(结果)一致性,但该var返回空。节点崩溃说:
result[0].data is undefined
Run Code Online (Sandbox Code Playgroud)
谢谢。
编辑:每当服务器上更新客户端js文件时,都会发生崩溃。(对.js文件进行本地编辑并通过FTP上传服务器后),为什么?
查询数据库时,我收到此错误:
TypeError: Cannot call method 'query' of undefined
at Object.<anonymous> (/home/nodeuser/myapp_node/index.js:51:17)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像:
var mysql = require('mysql');
var mysqlConnection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'carousel',
debug : true,
}).connect(function(err) {
if ( !err ) {
console.log("Connected to MySQL");
} else if ( err ) {
console.log(err);
}
});
var userId = 23
mysqlConnection.query('SELECT …Run Code Online (Sandbox Code Playgroud) 我使用 node.js 和模块 node-mysql 连接到 mySQL 服务器。但是,当我尝试在查询中转义数组时遇到了一些问题。这是我的代码:
connection.query("select * from table where id in (?)", [1, 3, 5], function(err, res) {
...
});
Run Code Online (Sandbox Code Playgroud)
上面的查询是select * from table where id in (1),这不是我的期望。
正如文件所说:
Arrays are turned into list, e.g. ['a', 'b'] turns into 'a', 'b'
我知道select * from table where id in (?,?,?)有效。问题是,如果我有一个长度未知的数组,我该怎么办?
我正在尝试使用从NPM下载的"mysql"模块将一些数据从Node JS发送到MySQL.
connection.beginTransaction(function(err) {
if (err) { throw err }
connection.query(sq, function (error, result) {
if (error) {
//return connection.rollback(function() {
throw err
//})
} else {
console.log('data is inserted ... ' + new Date())
}
})
Run Code Online (Sandbox Code Playgroud)
我的查询即sq是一些类似的东西..
INSERT INTO archlb_sales(fiscalYear, fiscalQuarterID, fiscalPeriodID, fiscalWeekID, geo, theater, area, operation, region, country, salesAgen
tName, emailID, arch, technology, subTechnology, tms3, productFamily, scms, totalSales, agentType, salesAgentnumber, softBookingsNet) values ('
2017', '2017Q1', '201701', '2017014', 'Americas', 'Americas-MISCL2', 'Americas-MISCL3', 'Americas-MISCL4', 'Americas-MISCL5', 'UNKNOWN', 'G2C A
djustment Agent', 'UNKNOWN' …Run Code Online (Sandbox Code Playgroud) 我的服务器根据请求,从节点mysql查询服务JSON,但只有名称行.例:
{
"Name": "Charles"
}, etc.
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得Name的值并将其放入数组中?说我有这个,
[
{
"Name": "Charles"
},
{
"Name": "Alex"
}
]
Run Code Online (Sandbox Code Playgroud)
我怎么能把查尔斯和亚历克斯变成阵列?
喜欢:
Names = ["Charles", "Alex]?
Run Code Online (Sandbox Code Playgroud) 我无法连接到 MySQL 数据库。我在谷歌上搜索了一些解决方案,但似乎没有一个有效,或者我可能还没有理解它们。这是设置:
let express = require("express");
let mysql = require("mysql");
let http = require("http");
let app = express();
http.createServer(app).listen(8000, function() {
console.log("Listening on http://localhost:" + port)
});
var connection = mysql.createConnection({
host: "127.0.0.1",
user: "root",
password: process.env.DB_PASSWORD,
database: "users",
port: 8000
});
connection.connect();
connection.query("SELECT * FROM user", function(err, rows, fields)
{
if (err) {
console.error("error connecting: " + err.stack);
return;
}
console.log(rows[0]);
});
connection.end();
Run Code Online (Sandbox Code Playgroud)
尝试与“socketPath”和另一个端口建立连接,但它们都返回错误:
Error: connect ECONNREFUSED 127.0.0.1:3306
at Object.exports._errnoException (util.js:1034:11)
at exports._exceptionWithHostPort (util.js:1057:20)
at TCPConnectWrap.afterConnect [as oncomplete] …Run Code Online (Sandbox Code Playgroud) node-mysql ×8
node.js ×8
javascript ×4
mysql ×3
socket.io ×2
arrays ×1
function ×1
json ×1
knex.js ×1