首页 > 解决方案 > 如何将 SQL 查询的结果放在下拉列表中?

问题描述

我使用 const

mysql = require('mysql2') 

并查询我的数据库

connection.query(query, function(err, result) {
    if(err) return callback(err);
    callback(null, result);
});

这工作得很好,我收到了结果。但是,我然后尝试通过结果来表达

app.get('/', (req, res) => {
    (sql code goes here), store it in result
      res.render('search', {
        dropdowns: [{
            name: 'Name1',
            title: 'Name1',
            options: result
            ...
            }

我得到一个包含正确数量条目的下拉列表,但是它们都是空的/“”(。)。

如果我使用 console.log 它说

[15:52:07] [日志] [对象对象],[对象对象],[对象对象],[对象对象]”。

我也尝试过制作 javascript 对象和 JSON.stringify 这些,但没有成功。如果我对 SQL 查询结果进行硬编码,它可以工作.. 选项应该看起来像

{"value":"foo","title":"foo!"}.

编辑:这是 SQL 代码的样子。在 render 在下面的地方, res.render 被插入。

function getMessage(query, callback) {
    doQuery(query, function (err, result) {
        if(err || !result.length) return callback('error or no results');
        callback(null, result);
    });
}

function doQuery(query, callback) {
    connection.query(query, function(err, result) {
        if(err) return callback(err);
        callback(null, result);
    });
};

getMessage(combinedQ, function(err, result){
    maxAvgift=result[0].maxAvgift;
    minAvgift=result[0].minAvgift;
    maxRum=result[0].maxRum;
    minRum=result[0].minRum;
    maxArea=result[0].maxArea;
    minArea=result[0].minArea;
    maxPris=result[0].maxPris;
    minPris=result[0].minPris;

    getMessage(disctinctLan, function(err, result){
      createJSON(result, lanList);
    });
    getMessage(disctinctObjekttyp, function(err, result){
      createJSON(result, objekttypList);
    });

    getMessage(testQ, function(err, result){
      console.log(result);
      createResultArray(result);

      render()
    });
});

标签: mysqlnode.jsexpress

解决方案


推荐阅读