I am having difficulties with Waterline models and creating the Postgres tables related to those models.
No matter what I do to create a varchar(n) in the table through a model, it converts the attribute to text. And bigint also is being converted to integer!
Should I change the ORM?
Is there a way to do that?
答案 0 :(得分:1)
你可以做一个更愉快的方法,使用Waterline在“CRUD”中“RUD”而不是“C” - 创建!这是因为Waterline在创建中间表,主键(复合键)等方面非常“糟糕”。所以我今天所做的就是:
.sql
文件存档以创建索引和表格。config/models.js
设置为migrate : safe
。结论:我可以使用Waterline插入,读取和删除行,但我不相信它(性能方面)来创建我的表。另一方面,Sequelize是一个更成熟的ORM,可以在需要时使用。对我来说,混合waterline
+ SQL
就足够了。
编辑:我的模型没有任何聚合(如my_pets: { model: pet}
),只有行名称和类型,尽可能简单。
答案 1 :(得分:0)
支持Sails的数据类型:
String,text,integer,float,date,datetime,boolean,binary,array,json,mediumtext,longtext,objectid
如果您需要指定确切的长度 - > varchar(n),您需要使用支持的数据类型,如上所示,或者sails提供名为query的选项。
Model.query()
方法,您可以使用它来执行您想要的任何类型的查询。
var queryString='CREATE TABLE if not exists sailsusers.test (id INT NOT NULL,name VARCHAR(45) NULL,PRIMARY KEY (id))'
Test.query(queryString,function(err,a){
if(err)
return console.log(err);
console.log(a,'\n',b);
res.ok();
});