设置

译者:飞龙

来源:Settings

设置用于储存键值对。设置对象是orm(默认值)上的实例,之后会为每个db连接和每个定义过的Model建立快照。所以orm.settings上的更改只会作用于更改之后建立的连接,而db.settings会作用于更改之后定义的模型。

  1. var orm = require("orm");
  2. orm.settings.set("some.deep.value", 123);
  3. orm.connect("....", function (err, db) {
  4. // db.settings is a snapshot of the settings at the moment
  5. // of orm.connect(). changes to it don't affect orm.settings
  6. console.log(db.settings.get("some.deep.value")); // 123
  7. console.log(db.settings.get("some.deep")); // { value: 123 }
  8. db.settings.set("other.value", { some: "object" });
  9. console.log(db.settings.get("other.value")); // { some: "object" }
  10. console.log(orm.settings.get("other.value")); // undefined
  11. });

默认设置的结构是这样的:

  1. var Settings = {
  2. properties : {
  3. primary_key : "id",
  4. association_key : "{name}_{field}",
  5. required : false
  6. },
  7. instance : {
  8. cache : true,
  9. cacheSaveCheck : true,
  10. autoSave : false,
  11. autoFetch : false,
  12. autoFetchLimit : 1,
  13. cascadeRemove : true,
  14. returnAllErrors : false
  15. },
  16. connection : {
  17. reconnect : true,
  18. pool : false,
  19. debug : false
  20. }
  21. };
设置 描述
properties.primary_key 在没有定义id属性的模型中,定义主键的名称
properties.association_key 关联键的属性名称(例如user_id
properties.required 属性是否拥有默认行为
instance.cache 实例是否应该被缓存 (并不是真的缓存,和单例模式相关)
instance.cacheSaveCheck 被缓存的对象是否应该从缓存中返回 (不要修改这个设置,除非你知道自己在做什么)
instance.autoSave 如果开启的话,修改实例的任何属性时会自动保存
instance.autoFetch 是否需要自动获取关联
instance.autoFetchLimit 如果开启了自动获取关联,这个设置是获取关联的深度
instance.cascadeRemove 删除实例时是否要删除关联
instance.returnAllErrors 如果开启,实例保存时会记录下所有的错误并以数组形式返回,而不是遇到第一个错误就中止并返回
connection.reconnect 连接失效时是否尝试重新连接
connection.pool 是否使用驱动带有的连接池(如果支持的话)
connection.debug 向控制台打印带颜色的查询信息