繁体   English   中英

为什么 sequelize 返回结果与 console.log(return) 不同?

[英]Why sequelize return result different than console.log(return)?

我尝试通过 postman 发送数据,数据结果是干净的(没有其他属性)。 但是当我尝试 console.log(data) 时,还有许多其他属性。 我在另一个线程上读到( Sequelize 返回结果与 console.log(result) 不同),这是因为 res.json 将数据序列化为一个普通的 object 和来自 dataValues 的 model 道具。 但是res.json怎么可能只得到dataValues属性而忽略其他属性呢?

我的代码:

async getItems(req, res, next){
    const data = await Item.findAll({
        attributes: ['id', 'name', 'price']
    });
    console.log(data);
    return res.status(200).json(data);
};

postman 结果:

[
    {
    "id": 1,
    "name": "PS5",
    "price": 600
    },
    {
    "id": 2,
    "name": "XBOX X",
    "price": 400
    }
]

控制台日志(数据)结果:

[
    Item {
      dataValues: {
        id: 1,
        name: 'PS5',
        price: 600
      },
      _previousDataValues: {
        id: 1,
        name: 'PS5',
        price: 600
      },
      uniqno: 1,
      _changed: Set(0) {},
      _options: {
        isNewRecord: false,
        _schema: null,
        _schemaDelimiter: '',
        raw: true,
        attributes: [Array]
      },
      isNewRecord: false
    },
    Item {
      dataValues: {
        id: 2,
        name: 'XBOX X',
        price: 400
      },
      _previousDataValues: {
        id: 2,
        name: 'XBOX X',
        price: 400
      },
      uniqno: 1,
      _changed: Set(0) {},
      _options: {
        isNewRecord: false,
        _schema: null,
        _schemaDelimiter: '',
        raw: true,
        attributes: [Array]
      },
      isNewRecord: false
    }
]

Sequelize 模型实现了一个toJSON方法, JSON.stringify在底层调用了该方法。 您还可以调用model.toJSON()来获取更清晰的日志:

https://sequelize.org/docs/v6/core-concepts/model-instances/#note-logging-instances

另一个例子:

JSON.stringify({
  toJSON() {
    return 'arbitrary value';
  }
});
// => "arbitrary value"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM