Articles of mysql

在环回中使用远程方法增加模型中的字段?

在模型中有一个称为counter的字段,每当我调用一个自定义的远程方法 Request URL http://loopback:3000/api/models/increment_counter Request body EMPTY Response { "counter" : [Value after Increment] } 目前要增量首先,我必须从数据库获取计数器值,并增加一个和更新couter值,这涉及到两个查询,是否有可能在单个NodeAPI调用,如下面的mysql query.I目前使用的是Mysql作为DB。 mysql_query(" UPDATE model SET counter = counter + 1 WHERE model_id = '1' "); 谢谢

Sequelize JSON数据types

我已经定义了一个模型 module.exports = function (sequelize, DataTypes) { const MyModel = sequelize.define('MyModel', { data: { type: DataTypes.JSON, … }, … }); return MyModel; }; 我使用查询 MyModel.findAll().then(myModels => …); 但是,查询结果中的data字段是一个string,而不是JSON对象。 我如何解决它?

检查用户是否已经存在(Node.js和mysql)

我试图检查数据库中的用户是否也存在。 我的代码工程,如果我添加一个用户到数据库而不检查是否有人的名字存在。 当我尝试检查它时,会出现问题,因为代码可以识别用户是否存在,但如果用户不存在,则无法将用户添加到数据库中。 其中的代码是这样的(函数DB()是代码创build与数据库的连接的地方): app.post('/Registro', function(req, res){ var conDB=DB(); var reg={ Usuario: req.body.Usuario, Contra: req.body.Contra }; console.log(req.body.Usuario+" "+req.body.Contra); var query=conDB.query('INSERT INTO Usuario SET ?',reg,function(err, res){ }); res.send("Usuario: "+req.body.Usuario+" y Contraseña: "+req.body.Contra + "REGISTRADOS"); conDB.end(); }); 代码不起作用(我试图检查用户是否存在)是这样的: app.post('/Registro', function(req, res){ var conDB=DB(); var reg={ Usuario: req.body.Usuario, Contra: req.body.Contra }; var UsuarioReg=req.body.Usuario; conDB.query('SELECT * FROM Usuario WHERE […]

节点MySQL以最快的速度执行多个查询

哪个是最快速的方法获取到MYSQL的查询,然后返回到输出: console.log('查询完成',结果)“ 有没有更好的方法? 请解释你的答案! 谢谢! 方法1: var connection = mysql.createConnection({multipleStatements: true}); connection.query('SELECT ?; SELECT ?', [1, 2], function(err, results) { if (err) throw err; console.log('queries done', results); }); 方法2: const Db = mysql.createPool({ connectionLimit: 7, dateStrings: true, multipleStatements: true }); Db.getConnection(function(err, connection) { if(err) console.log(err); connection.query(` SELECT "1" AS "first"; SELECT "2" AS "second";`, function(err, […]

ENOENT从App Engine连接到Google Cloud SQL时

我正在尝试在Google App Engine上部署Node.js应用程序,并且部署正常,但由于某些原因无法连接到Google Cloud SQL。 以下是它抛出的: Error: connect ENOENT /cloudsql/my-project-id:asia-east1:my-sql-instance 以下是我如何configuration连接: if (process.env.INSTANCE_CONNECTION_NAME) { exports.mysqlConfig = { user: process.env.GCLOUD_SQL_USERNAME, password: process.env.GCLOUD_SQL_PASSWORD, socketPath: '/cloudsql/' + process.env.INSTANCE_CONNECTION_NAME } } else { // Use settings for localhost } 我正在使用node-mysql模块连接到数据库。 App Engine和Cloud SQL已经在同一个项目中。 我的理论是App Engine和Cloud SQL必须在同一个项目和同一个区域,但是我不确定。

运行在heapspace之外的nodejs数据库迁移

您好我正在尝试将遗留数据库迁移到一个新的数据库与nodejs。 一些遗留的数据库表有近一百万行,因此这是一个任务与高内存消耗。 在我目前的脚本中,我很快就用完了堆内存。 我做了一些改变,我希望能解决这个问题,但是使用的空间还在迭代中增长。 下面的代码基本上是查询旧表,映射一些字段并插入新的数据库。 我已经把循环内部的variables声明移到了外部,希望旧的variables将被覆盖,现在需要新的空间。 此外,我使用arrays上的.pop希望这将不断减less剩余行所需的空间。 不过,正如我已经说过,所需的空间是随着迭代而不断增长的。 有没有人有一个想法,为什么? function migrate_user_table(callback) { // Migrate user table logger.log('info', "Starting migration of user table…"); let row = null; let userid = null; let fullname = null; let active = null; let imagepath = null; let statusbase64 = null; let gender = null; let orientation = null; let […]

从MySql中的不同表中获取父和子logging(一对多)

我有一个父表,称为订单和order_items的子表。 我需要获取每个订单的客户订单和相应的订单项目。 以下是架构: 命令: Id | Order_date | Order_value ——————————- 1234 | 2016-12-12 | 700.00 订单项目: Id | ProductId | OrderId —————————- 8847 | shirt_blue | 1234 8848 | shirt_red | 1234 我需要JSON的最终结果如下所示: { id: '1234', order_date: '2016-12-12', order_value: 700.00, Items: [ {id: '8847', productid: 'shirt_blue' }, {id: '8848', productid: 'shirt_red' } ] } 什么是从MySql获取这些logging的最干净和最快的方式? […]

针对where条件问题的子查询

我不知道如何更好地说出这个名字或者说这个词,这会导致我的search被扭曲。 我有这个声明,这是有效的。 SELECT username , ip FROM database.users WHERE ip = (SELECT ip FROM database.users_chat_history WHERE username = ? limit 1); 但是,我需要这样的东西,这是不允许的: SELECT username , ip FROM database.users WHERE ip = (SELECT ip , posted_at FROM database.users_chat_history WHERE username = ? group by posted_at desc limit 1); 错误:ER_OPERAND_COLUMNS:操作数应该包含1列(s) 原因是我需要它来抓取最新的/最近的一排进行search时,与第一个,这不是这样做,这是造成问题。 第二个查询,我只需要该语句的ip工作,但我需要它通过posted_at降序分组,因此它抓住最新的职位。 编辑:内部查询的数据库示例:

Lambda从MySQL RDS获取数据,但超时

我正在使用Lambda连接到RDS与VPC和正常工作。 我可以成功从MySQL获取数据,但Lambda会超时。 CloudWatch日志: 2017-02-15T18:56:18.609Z [RowDataPacket {userInfo:'xxx'}] END RequestId:xxx REPORT RequestId:xxx持续时间:300001.69 ms计费时间:300000 ms内存大小:512 MB使用的最大内存:22 MB 2017-02-15T19:01:18.306Z xxx任务在300.00秒后超时 Handle.js db.getPersonInfo("xxx", function (err, result) { console.log(result); const response = { statusCode: 200, body: JSON.stringify({ message: 'test', input: event, }), }; callback(null, response); }); DB.js var getPersonInfo = function(userId, callback){ pool.getConnection(function(err, connection){ var sql = 'SELECT userInfo FROM user […]

NodeJS UTF8string显示为? 而不是表情符号

我有一个MySQL的行中的值“testing”,并有一个赞赏表情符号: 但是,当我从数据库中检索这个值,我得到这个输出在控制台中: 我能做些什么来使表情符号在NodeJS中工作? database.query({ sql: "SELECT * FROM messages ORDER BY timestamp LIMIT 250" }, function(error, results) { if (error) { errorLog("MySQL error: " + error.code); } else { var messages = []; results.forEach(function(result) { console.log("pushing with msg " + result.message); messages.push({userID: String(result.sender), name: String(result.senderName), message: String(result.message)}); }); } });