我使用带有 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/