【问题标题】:Express JS POST method giving different value on same inputExpress JS POST 方法在相同的输入上给出不同的值
【发布时间】:2019-08-15 14:46:46
【问题描述】:

在 express js post 方法中,使用 knex ORM 构造一个 sql 查询以使用 ** where ** 条件选择整个,我看到相同输入的不同输出

我尝试使用数据库表中存在的电子邮件字符串,我使用了一次正确的电子邮件(得到预期的输出),下一个错误的电子邮件(预期的输出),正确的电子邮件(与第一个相同,但输出错误)

DB_login = knex('login');

app.post('/', (req, res) => {
    DB_login.where('email', '=', 'srinivaskandari97@gmail.com').select('hash').then(data => {
      console.log(data, 'srinivaskandari97@gmail.com');
    }).then(() => {
        DB_login.where('email', '=', 'srinivaskandari97@gmam').select('hash').then(data => {
        console.log(data,'srinivaskandari97@gmam' );
      }).then(() => {
          DB_login.where('email', '=', 'srinivaskandari97@gmail.com').select('hash').then(data => {
          console.log(data, 'srinivaskandari97@gmail.com');
          res.send('HI');
        });
       });

     });
  });

数据库表: 登录:

 id |                             hash                             |            email
----+--------------------------------------------------------------+-----------------------------
 11 | $2b$05$lwQeP2dpcpd52VWMJ4JksuFJHC0BG.XDG/VnUzcQB4m2vFGP358Ae | sydneystriker4@gmail.com
 12 | $2b$05$H68bFc2sIjVhKzk1P7zvyO.vYXjYy0jFxBu9IQLIhN.557WHCuW2q | srinivaskandari97@gmail.com

输出控制台:

[ { hash:
     '$2b$05$H68bFc2sIjVhKzk1P7zvyO.vYXjYy0jFxBu9IQLIhN.557WHCuW2q' } ] 'srinivaskandari97@gmail.com'   --- EXPECTED
[] 'srinivaskandari97@gmam'     --- EXPECTED
[] 'srinivaskandari97@gmail.com'--- UNEXPECTED, input is same as first one

【问题讨论】:

    标签: javascript express server knex.js


    【解决方案1】:

    所有查询都使用同一个构建器,因此所有where 调用都附加到同一个构建器。

    如果您不想更改初始构建器,则应使用clone()

    DB_login = knex('login');
    
    app.post('/', (req, res) => {
        DB_login.clone().where('email', '=', 'srinivaskandari97@gmail.com').select('hash').then(data => {
          console.log(data, 'srinivaskandari97@gmail.com');
        }).then(() => {
            DB_login.clone().where('email', '=', 'srinivaskandari97@gmam').select('hash').then(data => {
            console.log(data,'srinivaskandari97@gmam' );
          }).then(() => {
              DB_login.clone().where('email', '=', 'srinivaskandari97@gmail.com').select('hash').then(data => {
              console.log(data, 'srinivaskandari97@gmail.com');
              res.send('HI');
            });
           });
    
         });
      });
    

    【讨论】:

    • 非常感谢你。我一直在为此挠头。很大的帮助。谢谢
    猜你喜欢
    • 2014-08-19
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多