最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

从MySQL获取结果

网站源码admin19浏览0评论

从MySQL获取结果

从MySQL获取结果

我的后端由Api和DB组成。当我想从数据库获得响应时,我已将输出延迟了1个查询。API (我认为api可以。首先开始读取数据库)

app.post('/api/query', (req, res) => {
  console.log(`\n  Query input : ${JSON.stringify(req.body)}`);
  let queryInput = (Object.values(req.body).join(' '));


    if(!dbApi.checkArray(queryInput)){ //If array is not made from clear strings
      res.json(dbApi.queryFromUser(queryInput));
    }
    else{
      res.json(dbApi.queryOutput);
    }
});
app.listen(dbConfig.server.port, () =>
    console.log(`Server running on port ${dbConfig.server.port}`));

DB

queryOutput = [];
    const receivingQuery =(queryInput) => {

        db.query(queryInput, (err, result) =>{
            if(err) throw err+' : '+queryInput;
            queryOutput = result;
            console.log("\nQuery output "+ JSON.stringify(queryOutput)); //Output (result) is ok
        });
        return queryOutput //Here is Output from previous query (sends to API)

    }

module.exports = {
    queryOutput: queryOutput,
    queryFromUser: receivingQuery,
}

我尝试了回调方法,并重写了两次。但是我没有足够的技能来解决它​​。

回答如下:

如果要返回查询结果,只需执行以下操作:

1)将query方法添加到数据库模块:

function query(sql, args = []) {
  return new Promise(function(resolve, reject) {
    db.query(sql, args, (err, result) => {
      if (err) return reject(err);
      resolve(result);
    });
  });
}

// extra feature, getting user by id
async function getUserById(id) {
  const result = await query('SELECT * FROM users WHER id = ? LIMIT 1', [id]);
  if (Array.isArray(result) && result[0]) return result[0];
  return null;
}

module.exports = {
    query,
    getUserById, // export user by id

    queryOutput: queryOutput,
    queryFromUser: receivingQuery,
}

2)使用它(通过异步和等待):

app.post('/api/query', async (req, res) => {
  try {
    console.log('Query input:', req.body);
    let queryInput = Object.values(req.body).join(' ');

    const result = await dbApi.query(queryInput);
    res.json(result);
  }
  catch (error) {
    console.error(error);
    res.status(500).json({message: 'Please try again soon'});
  }
});

app.get('/api/users/:id', async (req, res) => {
  try {
    const user = await dbApi.getUserById(req.params.id);
    if (!user) return res.status(404).json({message: 'User not found'});
    res.status(200).json(user);
  }
  catch (error) {
    console.error(error);
    res.status(500).json({message: 'Please try again soon'});
  }
});

app.listen(dbConfig.server.port, () =>
    console.log('Server running on port', dbConfig.server.port));

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论