.meta()
在执行 查询实例 时,为 Waterline 提供额外的选项。
.meta(options)
参数 | 类型 | 详情 | |
---|---|---|---|
1 | options | 一个包含选项的字典(普通 JS 对象)。在下面的表格中查看所有支持的选项(也称为“元键”。 |
选项 | 类型 | 默认值 | 详情 | |
---|---|---|---|---|
fetch | false | 在执行 .update() 、.create() 、.createEach() 或 .destroy() 查询时,将此设置为 true 以告诉数据库适配器发回所有更新/销毁的记录。否则,.exec() 回调的第二个参数为 undefined 。警告:启用此键可能会导致影响大量记录的更新/销毁查询的性能问题。 |
||
cascade | false | 如果在 .destroy() 上设置为 true ,这将告诉 Waterline 为每个删除的记录执行“虚拟级联”。因此,删除具有双向“多对多关联”(一对多 或 多对多)的记录也将干净地移除所有与其他记录的链接(通过删除连接表行或将外键值设置为 null )。如果数据库大小是一个问题,或者如果主密钥可以重复用于记录,这可能很理想,但它会对 .destroy() 调用产生负面影响,因为它涉及执行更多查询。cascade 元键应仅与 MongoDB 之类的数据库一起使用,这些数据库 不支持 级联删除作为一项本机功能。如果您需要级联删除,并且您的数据库本机支持它(例如 MySQL 或 PostgreSQL),那么只需在物理层(例如 phpMyAdmin、Sequel Pro、mySQL 提示符等)添加 级联约束,而不是依赖 Waterline 的虚拟级联在运行时生效,您将享受性能的提升。 |
||
skipAllLifecycleCallbacks | false | 设置为 true 以阻止 生命周期回调 在查询执行期间运行。 |
||
skipRecordVerification | false | 设置为 true 以跳过 Waterline 对从适配器返回的任何记录进行的查询后验证传递。这对于像 sails-hook-orm 的自动迁移之类的工具很有用,或者禁用对使用案例的警告,在这些使用案例中,您知道数据库中的预先存在的记录与您的模型定义不匹配。 |
||
skipExpandingDefaultSelectClause | false | 设置为 true 以强制 Waterline 跳过在它构建阶段 3 查询(即传递到适配器方法的查询)时扩展条件中的 select 子句。通常,如果模型声明 schema: true ,那么 S3Q select 子句将扩展到一组列名,即使 S2Q 有工厂默认的 select /omit 子句(这也是在没有明确包含 select 或 omit 子句在原始查询中时它将具有的内容)。这对于像 sails-hook-orm 的自动迁移之类的工具很有用,在这些工具中,您希望临时访问不一定在当前属性定义集中的属性。警告:请勿在您的 Web 应用程序后端使用此标志,或者至少先 寻求帮助。 |
||
decrypt | false | 设置为 true 以解密记录中的任何 自动加密 数据。 |
||
encryptWith | 'default' | 用于为此特定查询加密的自定义密钥的 ID。(对于解密,始终根据要解密的数据使用相应的密钥。) | ||
makeLikeModifierCaseInsensitive | false | 设置为 true 以使您的查询不区分大小写(仅适用于 MongoDB 适配器)。 |
var newUser = await User.create({name: 'alice'})
.meta({fetch: true});
return res.json(newUser);
.fetch()
方法 是.meta({fetch: true})
的简写。- 为了使
cascade
在fetch
元键不也为true
时工作,Waterline 必须在实际执行.destroy()
之前执行额外的.find().select('id')
,以便获取将被销毁的记录的 ID。- 除了使用
.meta()
查询方法之外,您还可以通过在显式回调之后传递字典来为查询设置元键。例如:User.create({name: 'alice'}, function(err, newUser){/*...*/}, { fetch: true })
。