5.3.2 上下文

Context是和的超 Session 类型 Batch。它包含从会话调用或执行批处理时立即执行的函数。

Mynode实现没有用户的任何概念,并且没有定义任何此类属性。

find(Function constructor, Object keys, Function(Object error, Object instance[, ...]) callback[, ...]);

find(String tableName, Object keys, Function(Object error, Object instance[, ...]) callback[, ...]);

根据主键或唯一键值查找特定实例。

您可以使用此函数的两个版本中的任何一个。在第一个版本中,constructor 参数是映射域对象的构造函数。或者,您可以 tableName在函数的第二个变体中使用代替。

对于 的两个版本find()keys可以是任何类型。键必须唯一标识数据库中的一行。如果 keys是简单类型(数字或字符串),则参数类型必须与映射对象的主键类型相同或兼容。否则,属性取自参数并与映射中的属性名称匹配。如果所有属性都存在,则使用主键属性,而忽略其他属性。如果 keys不能用于标识主键,而是使用与唯一键列对应的属性名称。如果没有找到完整的主键或唯一键属性,则会报告错误。返回的对象是根据映射和数据库中的当前值加载的。

对于多列主键或唯一键,必须设置所有键字段。

load(Object instance, Function(Object error) callback);

通过将其主键或唯一键与数据库行匹配来加载特定实例,而无需创建新的域对象。(这与 不同 find(),它创建一个新的映射域对象。)

必须具有其instance主键值或唯一键值或值集。对象中的映射值是根据数据库中的当前值加载的。对象中未映射的属性不会更改。

如果所有属性都存在,则使用主键属性,并忽略所有其他属性;否则,使用与唯一键列对应的属性名称。如果找不到完整的主键或唯一键属性,则会报错。

callback操作完成后,将使用提供的参数调用 该函数。The error是 Node.js Error对象;有关详细信息,请参阅 第 5.3.4 节“错误”

persist(Object instance, Function(Object error) callback);

persist(Function constructor, Object values, Function(Object error) callback);

persist(String tableName, Object values, Function(Object error) callback);

向数据库中插入一个实例,除非该实例已经存在于数据库中,在这种情况下会向函数报告异常callback。执行时自动生成的值存在于实例中 callback

要持久化的实例的作用可以通过以下三种方式中的任何一种来实现:通过实例对象;通过带有参数的构造函数,用于映射的域对象;或按表名和要插入的值。

在所有这三种情况下,callback 当操作完成时,将使用提供的参数(如果有)调用该函数。The error是 Node.js Error对象;有关详细信息,请参阅 第 5.3.4 节“错误”

remove(Object instance, Function(Object error) callback);

remove(Function constructor, Object keys, Function(Object error) callback);

remove(String tableName, Object keys, Function(Object error) callback);

通过主键或唯一键从数据库中删除类的实例。

共有三个版本remove();这些允许您通过引用 instance对象、 constructor函数或表名来删除实例。该instance对象必须包含唯一标识数据库中单个行的键值。否则,如果keys 函数构造函数或表名提供的是简单类型(NumberString),则参数类型必须与映射对象的主键类型相同或兼容。如果keys不是简单类型,属性取自参数并与映射中的属性名称匹配。如果所有属性都存在,则使用主键属性,而忽略其他属性。如果 keys不标识主键,则使用与唯一键列对应的属性名称。如果未找到完整的主键或唯一键属性,则会向 callback.

当操作完成时, 所有三个版本都使用提供的参数(如果有)remove()调用 函数。callbackerror对象是一个 Node.js Error;有关错误代码, 请参阅 第 5.3.4 节“错误” 。

update(Object instance, Function(Object error) callback);

update(Function constructor, keys, values, Function(Object error) callback);

update(String tableName, keys, values, Function(Object error) callback);

使用提供的更新数据库中的实例 values而不检索它。主键用于确定更新哪个实例。如果实例在数据库中不存在,则报异常callback

与前面显示的用于在数据库中持久化实例和从数据库中删除它们的方法一样,update() 存在三种变体,它们允许您将 the instance用作对象、对象 constructorwith keys或 by tableNameand keys

对象的唯一键字段keys决定instance要更新的对象。该values对象提供要更新的值。如果keys 对象包含主键对应的所有字段,则主键标识该实例。如果不是,则选择唯一键是一种不确定的方式。

笔记

update()不能用于更改主键。

save(Object instance, Function(Object error) callback);

save(Function constructor, Object values, Function(Object error) callback);

save(String tableName, Object values, Function(Object error) callback);

在数据库中保存一个实例而不检查它是否存在。如果该实例已经存在,则更新它(就像您使用过一样 update());否则,它被创建(就像 persist() 已经被使用过一样)。实例id属性用于确定应保存哪个实例。与 update()persist()和 一样remove(),此方法允许您使用对象、对象构造函数或表名指定实例。

该方法的所有三个版本都使用操作完成时提供的任何参数save()调用该函数。callbackerror是一个 Node.js Error对象;有关错误代码和消息, 请参阅 第 5.3.4 节“错误” 。

Boolean isBatch()

Context还公开了一个 isBatch()实例方法,如果 thisContext是 a 则返回 true,如果是 a 则返回Batchfalse SessionisBatch()不接受任何争论。