javascript - 如何从 sequelize findAll 结果修改虚拟字段?

标签 javascript sequelize.js

我到处都找过了,找不到任何明确的答案。 我有一个复杂的 findAll(),其中包含许多内容,每个内容都有自己的虚拟字段。 我想要的是修改结果的虚拟字段,但是当它返回试图访问虚拟字段的模型实例时返回未定义,因为它们不在结果中。 我已经尝试过“原始:真实”,但这会删除所有虚拟字段,并且由于我的数据有嵌套表,这些表也有自己需要的虚拟字段,所以我不能这样做。

示例模型

var Book = sequelize.define('Book', {

        id: {
            type: DataTypes.INTEGER,
            allowNull: false,
            autoIncrement: true,
            primaryKey: true
        },
        title: {
            type: DataTypes.STRING
        },
        author: {
            type: DataTypes.STRING
        }
        //....other columns,
        myField: {
            type: DataTypes.Virtual,
            get() {
                return this.getDataValue('title:') + this.getDataValue('author');
    })

获取数据

model.Book.findAll({
  limit: 100
})
.then((result) => {

  const newBook = result.map(row => {
    return {...row, myField: 'setMyOwnValueHere'}
  }

  return newBook
}

最佳答案

首先获取模型数据:get

model.Book.findAll({
    limit: 100
}).then(result => {
    const books = result.map(row => {
        //this returns all values of the instance, 
        //also invoking virtual getters
        const book = row.get();
        book.myField = 'setMyOwnValueHere';
        return book;
    });
    return books;
});

关于javascript - 如何从 sequelize findAll 结果修改虚拟字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60843078/

相关文章:

javascript - 为什么这些手写笔哈希的行为不一样?

javascript - 如何在js全年日历中选择范围并添加事件

many-to-many - 使用自定义外键序列化多对多关系

sql - 使用 NodeJS 进行 Sequelize 无法连接有限制的表

node.js - Passport js 使用sequelize进行本地身份验证

javascript - 根据用户所在的页面更改 div 中的文本

JavaScript 匿名函数变量

node.js - 为什么 Sequelizer 忽略了我的用户名

sequelize.js - Sequelize 返回结果与 console.log(result) 不同

Javascript 代码子字符串