我遇到使用PostgreSQL数据库运行的Sails应用程序的问题。我需要插入一个11位整数,但我找不到一种简单的方法来调整我的模型。
修改1 这是一个模型的例子:
/**
* Phone.js
*
* @docs :: http://sailsjs.org/#!documentation/models
*/
module.exports = {
attributes: {
number: {
type: 'integer',
required: true,
minLength: 9
}
}
};
是否有办法(使用ORM)将该整数更改为Postgre中的BIGINT,以便插入时不会得到ERROR: integer out of rage
?
答案 0 :(得分:1)
据此,哟应该能够定义" bigint"作为类型
https://github.com/balderdashy/sails-postgresql/blob/master/lib/utils.js#L241
还支持float,real,smallint等。 。 。
答案 1 :(得分:1)
在我的情况下,将类型定义为bigint不起作用。在模型中创建条目时,我在验证时遇到错误。
但是,我提供了以下属性,
type: string,
numeric: true,
minLength: 10
这很好,但不完全是我想要的。
答案 2 :(得分:1)
您的值作为字符串返回的原因是因为PostgreSQL's maximum value for BIGINT(2 ^ 63-1 = 9223372036854775807)远大于Javascript' s Number.MAX_SAFE_INTEGER(2 ^ 53 - 1 = 9007199254740991) )所以如果Sails / Waterline ORM将你的返回值作为一个整数投射,那么就有可能破坏事物。
因此,每次返回一个字符串会更安全。
答案 3 :(得分:0)
我可以通过以下设置属性来使其工作:
type: 'ref',
columnType: 'int8',