资讯专栏INFORMATION COLUMN

orm2 中文文档 3.1 模型属性

Yuqi / 2092人阅读

摘要:译者飞龙来源模型和一些关联具有一个或多个属性,每个属性有类型以及一些可选设置,你可以自行选择它们或使用默认设置。文本类型也支持最大尺寸数值和布尔值,用于非常长的字符串。数值类型是浮点数,支持数值,字节大小和布尔值。日期类型支持布尔值。

译者:飞龙

来源:Model Properties

模型和一些关联具有一个或多个属性,每个属性有类型以及一些可选设置,你可以自行选择它们(或使用默认设置)。

类型

受支持的类型是:

text:文本字符串;

number:浮点数。你可以指定size2 | 4 | 8

integer:整数。你可以指定size2 | 4 | 8

booleantruefalse的值;

date:日期对象。你可以指定timetrue

enum:一个备选列表中的值;

object:JSON对象;

point:N维的点(不被广泛支持);

binary:二进制数据;

serial:自增长的整数,用于主键。

每个类型都有额外的选项。这个模型定义使用了它们中的绝大多数:

var Person = db.define("person", {
    name    : { type: "text", size: 50 },
    surname : { type: "text", defaultValue: "Doe" },
    male    : { type: "boolean" },
    vat     : { type: "integer", unique: true },
    country : { type: "enum", values: [ "USA", "Canada", "Rest of the World" ] },
    birth   : { type: "date", time: false }
});

所有类型都支持required(布尔值),unique(布尔值)和defaultValue(文本)。文本类型也支持最大尺寸(数值)和big(布尔值,用于非常长的字符串)。数值类型是浮点数,支持size(数值,字节大小)和unsigned(布尔值)。日期类型支持time(布尔值)。

要注意8字节的数值有其局限性。

如果你打算用默认选项,你可以使用原生类型来指定属性类型:

var Person = db.define("person", {
    name    : String,
    male    : Boolean,
    vat     : Number, // FLOAT
    birth   : Date,
    country : [ "USA", "Canada", "Rest of the World" ],
    meta    : Object, // JSON
    photo   : Buffer  // binary
});
将ORM字段映射到不同名称的数据库列中
var Person = db.define("person", {
    name    : { type: "text", mapsTo: "fullname" }
});

ORM属性name映射person表的fullname列。

自定义类型

你可以向ORM添加你自己的类型,像这样:

db.defineType("numberArray", {
  datastoreType: function(prop) {
    return "TEXT"
  },
  // This is optional
  valueToProperty: function(value, prop) {
    if (Array.isArray(value)) {
      return value;
    } else {
      return value.split(",").map(function (v) {
        return Number(v);
      });
    }
  },
  // This is also optional
  propertyToValue: function(value, prop) {
    return value.join(",")
  }
});
var LottoTicket = db.define("lotto_ticket", {
  numbers: { type: "numberArray" }
});

一些可用的高级自定义类型,能够让你像 PostGIS 那样使用模型。请见这个 spec 。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17508.html

相关文章

  • orm2 中文文档 3. 定义模型

    摘要:译者飞龙来源在连接之后,你可以使用连接对象来定义你的模型。你需要指定模型的名称,一个用于描述的属性和一些可选的选项。在这个例子中,有个模型方法叫做。接收的第一个对象第二个参数被称为属性对象,它定义了所有的属性。在属性修改时自动保存模型。 译者:飞龙 来源:Defining Models 在连接之后,你可以使用连接对象(db)来定义你的模型。你需要指定模型的名称,一个用于描述的属性和...

    gnehc 评论0 收藏0
  • orm2 中文文档 3.2 模型验证器

    摘要:译者飞龙来源模块用于验证数据。可用的验证器的列表请见。验证器也构建于中,可以这样来访问你可以为模型的每个属性定义验证器。在第一个验证器验证失败之后,验证就停止了。 译者:飞龙 来源:Model Validations Enforce模块用于验证数据。对于使用以前的验证器的用户,还可以继续使用,它们中的一部分整合到了enforce,剩余部分还没有。推荐你开始使用orm.enforce...

    zhiwei 评论0 收藏0

发表评论

0条评论

Yuqi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<