【问题标题】:Return a value from sequelize query从 sequelize 查询返回一个值
【发布时间】:2016-08-25 13:50:57
【问题描述】:

我是续集的新手。我使用 mysql 作为我的数据库。我有一个从数据库中查找电子邮件 ID 的 sequelize 查询。通过使用此查询的结果,我得到了该行的 ID。现在我需要返回这个值。有人可以帮助我如何做到这一点。

这是我的代码。

var userId = getUserId(email_address);
function getUserId(email_address) {
   models.users.findOne({
     where: {
       email: email_address
     }
   }).then(function(result) {
      if (result) {
        var applicantId = result.id;
        return applicantId;  // This is what I need to do
      } else {
        console.log("Could not find Email");
      }
   });
}

这里我需要将变量申请者ID返回给调用函数。

【问题讨论】:

  • 首先,你不能只返回值。 db 查询是一个异步调用,需要按此处理。您的函数 getUserId() 需要返回一个 Promise。只需返回 models.users.findOne() 方法。
  • 感谢@Himmet 的回复。当我返回 models.users.findOne() 时,我将在 userId 处获得一个 promise 对象。如何访问该承诺对象的值?你能帮帮我吗?
  • 这里有一个关于如何使用 javascript promises sitepoint.com/overview-javascript-promises 的教程我建议你从那里开始。
  • 谢谢@GrimurD。这对我帮助很大。

标签: mysql node.js express sequelize.js


【解决方案1】:

对数据库的 Sequelize 调用是异步的,因此您需要稍微修改代码以使用 Promise。像这样的:

function getUserId(email_address) {
   return models.users.findOne({
     where: {
       email: email_address
     }
   });
}

getUserId("some@email.com").then(function(result){
   console.log(result.id);
});

查看模拟您的场景的 this fiddle

【讨论】:

  • 谢谢@scottjustin5000。这行得通。我对承诺有点困惑。
猜你喜欢
  • 2018-09-09
  • 2017-11-06
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多