开发者社区> apachecn_飞龙> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

orm2 中文文档 3.1 模型属性

简介: 译者:飞龙 来源:Model Properties 模型和一些关联具有一个或多个属性,每个属性有类型以及一些可选设置,你可以自行选择它们(或使用默认设置)。
+关注继续查看

译者:飞龙

来源: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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android官方开发文档Training系列课程中文版:Activity测试之UI组件测试
原文地址:http://android.xsoftlab.net/training/activity-testing/activity-ui-testing.html 一般来说,正因为Activity含有UI组件,所以使得用户可以与程序交互。
912 0
Android官方开发文档Training系列课程中文版:通知用户之构建通知
原文地址:http://android.xsoftlab.net/training/notify-user/index.html 引言 通知用于在有事件发生时,将事情以更便捷的方式展示给用户。
698 0
orm2 中文文档 4.2 hasMany(多对多关系)
译者:飞龙 来源:hasMany hasMany 是多对多的关系(包括连接表)。 例如:Patient.hasMany('doctors', Doctor, { why: String }, { reverse: 'patients', key: true })。
637 0
orm2 中文文档 4. 定义关联
译者:飞龙 来源:Defining Associations 关联是一个或多个[模型之间](3. Defining Models.md)的关系。
612 0
orm2 中文文档 4.1 hasOne(多对一关系)
译者:飞龙 来源:hasOne hasOne关联是一种多对一的关系,意思是你定义的模型可以有多个实例指向一个其它的实例(所属相同模型或不同模型)。
563 0
文档对象模型DOM(一)
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。 HTML DOM 模型被构造为对象的树。 HTML DOM 树 每加载一个标记 注释 或者属性,就将其当做节点(node)。
691 0
Android官方入门文档[17]构建灵活的UI
Android官方入门文档[17]构建灵活的UI Building a Flexible UI构建灵活的UI   This lesson teaches you to1.
889 0
TestNG官方文档中文版(2)-annotation
TestNG的官方文档的中文翻译版第二章,原文请见 http://testng.org/doc/documentation-main.html2 - Annotation这里是TestNG中用到的annotation的快速预览,还有它们的属性。
685 0
TestNG官方文档中文版(5)-测试方法/类和组
5 - Test methods, Test classes and Test groups 5.1 - Test groups TestNG容许执行复杂的测试方法分组。不仅可以申明方法属于组,而且可以指定分组包含其他分组。
897 0
+关注
apachecn_飞龙
Github:@wizardforcel 简书:@ApacheCN_飞龙 微博:@龙雀 CSDN:@wizardforcel ApacheCN 官网:apachecn.org 机器学习交流群:629470233
719
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载