【问题标题】:NodeJS - MySQL QueryNodeJS - MySQL 查询
【发布时间】:2021-08-20 16:23:41
【问题描述】:

我想查询我的 MySQL 数据库。我在 req.body.audioid 中有 audioid 34,所以我需要选择第 34 行的 opid 33 并返回第 33 行的所有列。

但是我的代码什么也没返回。这是我的桌子;

这是代码;

    var getMessageReplies = async function (req, res) {
    
    let row_a ;
    const db = makeDb( config );
    const audioid = req.body.audioid;
    
    try {   
    
    row_a = await db.query( `
    SELECT
    m.audiourl, 
    m.receiver, 
    m.audioid, 
    m.sender,
    m.opid, 
    m.timestamp,
    ac.gavatar, 
    ac.name,
    ac.bio, 
    (
      SELECT count(*) FROM messages m WHERE m.opid = m.audioid
    ) as replycount
    FROM messages m 
    LEFT JOIN accounts ac ON ac.id = m.sender  
    WHERE m.opid = ? 
    ORDER BY m.audioid DESC
    `, [audioid]);  

    if (row_a != 0) {   

     console.log('Got conversation');
     res.json({
         row_a
        });             
    } else {
    console.log('None');
    res.json({
         "message" : 'None' 
        }); 
    }
}
  
catch(err) {
    console.log(err.message);
}
finally {
    db.close();
}
}

我做错了什么?

【问题讨论】:

    标签: mysql sql node.js


    【解决方案1】:

    看来你在where 条件下做错了。

    WHERE m.opid = ?
    

    听着,我觉得应该是

    WHERE m.audioid = ? 
    

    当您传递 audioid 并检查 opid 时,可能这就是您无法获取数据的原因。

    【讨论】:

    • 这只是我需要的第 34 行而不是第 33 行。
    【解决方案2】:

    我无法在单个查询中弄清楚它;

    try {   
        
        row_a = await db.query( 'SELECT opid FROM messages WHERE audioid = ?', [audioid]);
        const opid = row_a[0].opid; 
        
        row_b = await db.query( `
        SELECT
        m.audiourl, 
        m.receiver, 
        m.audioid, 
        m.sender,
        m.opid, 
        m.timestamp,
        ac.gavatar, 
        ac.name,
        ac.bio, 
        (
          SELECT count(*) FROM messages m WHERE m.opid = m.audioid
        ) as replycount
        FROM messages m 
        LEFT JOIN accounts ac ON ac.id = m.sender  
        WHERE m.audioid = ? 
        ORDER BY m.audioid DESC
        `, [opid]); 
    
        if (row_b != 0) {   
    
         console.log('Got conversation');
         res.json({
             row_b
            });             
        } else {
        console.log('None');
        res.json({
             "message" : 'None' 
            }); 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-22
      • 2018-09-30
      • 2023-03-28
      • 2019-03-09
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多