node.js - Sequelize 将整数作为字符串返回

标签 node.js sequelize.js

我使用带有 sequelize 的 nodejs v4,我有一个这样的模型:

var Device = sequelize.define('Device', {
id: {
  type: DataTypes.BIGINT,
  primaryKey: true,
  autoIncrement: true
},
tenantId: {
  type: DataTypes.BIGINT,
  allowNull: false
},
token: {
  type: DataTypes.STRING,
  allowNull: false
}
}, {
 tableName: 'devices'
});

当我通过 id 选择一个设备时,id 的类型是一个字符串,例如:

Device.findById(9).then( function(result) {
  console.log(result.toJSON().id + 10);
});

输出将是 910,而不是 19,所以我查看 json 并看到了这个:

{
  id: "9"
  tenantId: "123"
  token: "adsadsdsa"
}

found device里面的id是字符串,我定义成数字...

不应该是 { "id": 9 } 吗?

如何选择具有我之前定义的类型的设备?

最佳答案

BIGINT 最大值是 2^63-1,javascript 可以安全地表示最多 2^53。为了安全起见,库将这些数字作为字符串返回。

如果你想要数字而不是字符串,你可以使用这个库https://github.com/mirek/node-pg-safe-numbers它处理这个问题。

关于node.js - Sequelize 将整数作为字符串返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32544151/

相关文章:

javascript - Sapper 在点击链接时不会重新加载数据

javascript - 有条件地返回 promise 的问题(Nodejs)

mysql - 有谁知道是否有办法在 JSON_ARRAYAGG() 中实现任何排序或过滤?

node.js - Sequelize 和 WHERE 1=1 中的函数

node.js - 成员函数如何访问成员变量?

node.js - 如何将 somata 客户端连接到远程注册表?

node.js - 仅从 Sequelize 结点模型返回指定的关联模型

node.js - 序列化事务总是返回 null

javascript - 无法获取/登录

javascript - Sequelize 迁移执行顺序