代码之家  ›  专栏  ›  技术社区  ›  Neha

如何传递多个GET参数来表示?

  •  0
  • Neha  · 技术社区  · 6 年前

    我对这个有点陌生节点.js在中编写一些restapi节点.js. 对于我的一个API,我需要传递2个参数才能从数据库中获取数据。我使用单个参数实现了它,但不超过2个。有人能帮我吗?

    这是我的密码

    app.get('/getData/:receiver_id&:sender_id',function(req,res){
        connection.query('SELECT * FROM mytable WHERE sender_id=? AND receiver_id=?',[req.params.sender_id],[req.params.receiver_id],function(error,results,fields){
            if(error) throw error;
            else {
            res.json({'result':results})
            console.log(JSON.stringify(results))
            }
        });
    });
    

    我一直在控制台里发现这个错误

    > /var/www/html/chatApp/node_modules/mysql/lib/protocol/Parser.js:80
            throw err; // Rethrow non-MySQL errors
                  ^
    TypeError: Object 1 has no method 'apply'
        at Query.Sequence.end (/var/www/html/chatApp/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
        at Query.ErrorPacket (/var/www/html/chatApp/node_modules/mysql/lib/protocol/sequences/Query.js:90:8)
        at Protocol._parsePacket (/var/www/html/chatApp/node_modules/mysql/lib/protocol/Protocol.js:278:23)
        at Parser.write (/var/www/html/chatApp/node_modules/mysql/lib/protocol/Parser.js:76:12)
        at Protocol.write (/var/www/html/chatApp/node_modules/mysql/lib/protocol/Protocol.js:38:16)
        at Socket.<anonymous> (/var/www/html/chatApp/node_modules/mysql/lib/Connection.js:91:28)
        at Socket.<anonymous> (/var/www/html/chatApp/node_modules/mysql/lib/Connection.js:502:10)
        at Socket.EventEmitter.emit (events.js:95:17)
        at Socket.<anonymous> (_stream_readable.js:710:14)
        at Socket.EventEmitter.emit (events.js:92:17)
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   raina77ow    6 年前

    this thread 对于替代方法),问题是不同的:您应该使用一个数组来传递查询的所有值( docs

    connection.query(
       'SELECT * FROM mytable WHERE sender_id=? AND receiver_id=?',
       [req.params.sender_id, req.params.receiver_id],
       function(/*...*/)
    );
    

    请注意,此处的错误消息实际上很有用: Object 1 has no method apply 意味着MySQL包试图将您的param作为一个函数(回调)来处理。

        2
  •  1
  •   Prashant Gupta    6 年前

    在这个fromat中形成url localhost:portno/getData/:receiver_id/:sender_id Ex: localhost:portno/getdata/12/21

    app.get('/getData/:receiver_id/:sender_id',function(req,res){
        connection.query('SELECT * FROM mytable WHERE sender_id=? AND receiver_id=?',[req.params.sender_id, req.params.receiver_id],function(error,results,fields){
            if(error) throw error;
            else {
            res.json({'result':results})
            console.log(JSON.stringify(results))
            }
        });
    });
    

    其他方式

    'Ex: localhost:portno/getdata/12&21`
     app.get('/getData/:receiver_id&:sender_id',function(req,res){
            connection.query('SELECT * FROM mytable WHERE sender_id=? AND receiver_id=?',[req.params.sender_id, req.params.receiver_id],function(error,results,fields){
                if(error) throw error;
                else {
                res.json({'result':results})
                console.log(JSON.stringify(results))
                }
            });
        });
    

    还有一个办法

    app.get('/getData/:receiver_id&:sender_id',function(req,res){
            connection.query('SELECT * FROM mytable WHERE sender_id=? AND receiver_id=?',req.params.sender_id, req.params.receiver_id,function(error,results,fields){
                if(error) throw error;
                else {
                res.json({'result':results})
                console.log(JSON.stringify(results))
                }
            });
        });
    
        3
  •  0
  •   Vaghani Janak    6 年前
    app.get('/getData/:receiver_id/:sender_id',function(req,res){
        connection.query('SELECT * FROM mytable WHERE sender_id=? AND receiver_id=?',[req.params.sender_id, req.params.receiver_id],function(error,results,fields){
            if(error) throw error;
            else {
                res.json({'result':results})
                console.log(JSON.stringify(results))
            }
        });
    });