полагаться на результат запроса для запуска другого узлаjs mysql - PullRequest
0 голосов
/ 07 ноября 2018

Эй, ребята, у меня есть следующий код узла, и он отлично работает

import express from 'express';
import connection from '../index.js'
const router = express.Router();
router.get('/allTemplates', function (req, res) {

    let queryString="select count(*) as exist from users where userName='bob'";
    let query = connection.query(queryString, (error, result) => {
        if(error) {throw error;}
        res.json(result);
    })
});
module.exports = router;

я хочу отреагировать на это чем-то вроде

if(exists==1){error='sorry but that user already exists';} else {
queryString="insert into users (userName, email, address) values('bob', 'emailAddress@email.com', 'address')";
let query = connection.query(queryString, (error, result) => {
            if(error) {throw error;}
            res.json(result);
        })
} 

Я пришел из php-фона, так что все это очень ново, и асинхронность узла выводит меня из себя, но я должен использовать ее для своей новой работы. Как бы я отреагировал на результат одного запроса и запустил другой на основании результата.

1 Ответ

0 голосов
/ 12 декабря 2018

Я поместил библиотеку mysql в переменную с именем database и использую async await для выполнения запросов. В файле базы данных я подключаюсь к базе данных и настраиваю свои переменные так:

const mysql = require("mysql");
const util = require("util");

const awsConfig = {
  host: process.env.RDS_HOST,
  user: process.env.RDS_USER,
  password: process.env.RDS_PASSWORD,
  database: process.env.RDS_DATABASE
};

const connection = mysql.createConnection(awsConfig);

connection.query = util.promisify(connection.query.bind(connection));
connection.end = util.promisify(connection.end.bind(connection));

module.exports = connection;

Чем я использую async, ожидают выполнения запросов и используют результаты, чтобы запускать или не запускать другие. вот так:

let result;
let sqlStatement ="";

    result = await database.query(sqlStatement);
    let userExists = result[0].exist;
 sqlStatement =
    "SELECT COUNT(*) AS exist FROM user where userName=" +
    database.escape(req.body.userName);
if(userExists==0){
    result = await database.query("INSERT INTO user SET ?", [req.body]);
}

надеюсь, это поможет кому-то еще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...