5.3.2 上下文

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

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 函数。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 函数。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() 在操作完成后都会使用提供的任何参数调用 callback 函数。error 对象是 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() 也存在三种变体,它们允许您将 instance 用作对象、带有 keys 的对象 constructor 或通过 tableNamekeys 来使用。

keys 对象的唯一键字段确定要更新哪个 instancevalues 对象提供要更新的值。如果 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() 方法在操作完成后都会使用提供的任何参数调用 callback 函数。error 是 Node.js Error 对象;有关错误代码和消息,请参阅第 5.3.4 节“错误”

Boolean isBatch()

Context 还公开了一个 isBatch() 实例方法,如果此 ContextBatch,则返回 true,如果它是 Session,则返回 false。isBatch() 不带任何参数。