Sequelize中的异步获取器/设置器作为属性的一部分

美食

我可以在Sequelize中将属性的获取程序定义为asyc函数吗?
在getter中,我应该从另一个表中检索一个值,并且我已经在模型定义中尝试过此操作:

...
bio: {
    type: Sequelize.STRING,
    get: async function() {
        let bio = this.getDataValue('bio');
        if (bio) {
            let bestFriend = await db.models.User.findById(this.getDataValue('BestFriendId'))
            if(bestFriend){
                bio += ` Best friend: ${bestFriend.name}.`;
            }
            console.log(bio)
            return bio;
        } else {
            return '';
        }
    }
},
...

记录我可以通过以下方式读取正确的简历:
Born yesterday. Love to read Best friend: Markus

但是我检索的对象的bio属性中有一个空对象。
我想那是因为不支持异步功能,我错了吗?

在不使用异步功能的情况下如何实现?

安东尼奥·纳尔克维奇(Antonio Narkevich)

根据文档, getter和setter不支持任何形式的异步。它们是同步的。因此,无法使用异步功能(因为我们需要Promise支持)。

而且,这里是一个线程对这个话题的讨论。而且它证实了此功能打算在将来增加。

您可以改为扩展模型并添加实例级别方法。该文档将其称为virtual getter请看这篇文章

您也可以制作它async并访问模型数据。

BioModel.prototype.getBio = async function() {
    let bio = this.getDataValue('bio');
    if (bio) {
        let bestFriend = await db.models.User.findById(this.getDataValue('BestFriendId'))
        if(bestFriend){
            bio += ` Best friend: ${bestFriend.name}.`;
        }
        return bio;
    } else {
        return '';
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

作为 CI/CD 部署的一部分,无法在 Azure 数据工厂中激活触发器

Django序列化器输出作为JSON对象的一部分

需要日期选择器的值作为变量的一部分

如何在JMeter中使用REGEX提取器从变量中获取值的一部分?

将寄存器作为AVR微控制器中存储器的一部分有什么好处?

在PHP中获取日期的一部分

在Python中获取整数的一部分

在bash中获取列表的一部分

在C中获取整数的一部分

在Android中获取图片的一部分?

从txt中获取句子的一部分

从字典中获取一部分

通过CSS attr()获取属性的第一部分/最后一部分

是触发器作为SQL Server中事务的一部分出现

Firebase 触发器中的云函数不是事务更新的一部分

在编辑器中仅显示文档的一部分

通过Go中的接口解耦...接口实现器的一部分?

将网站的一部分显示到Web浏览器中

使用 JDBC 连接器在 spark 中读取 MySQL 表的一部分

将事件侦听器作为部分页面的一部分加载时,如何将其添加到表单中?

我需要将用户输入作为获取请求的一部分提交给未启动的服务器

Dataweave-使用另一个键作为keyName一部分的选择器

使用Django自定义管理器方法作为Q对象链的一部分

用于动态路由的路由装饰器,允许斜线作为变量字符串的一部分

在Mobile中使用密码作为加密密钥的一部分-服务器通信

如何查看作为RAID 1阵列一部分的驱动器上的数据?

如何在触发器的设置器中的一部分文本上设置前景?

如何使脚本的一部分与dask异步?

在javascript中作为HTML5音频播放器页面的一部分使用echo'd ++ $ value时出现问题