【问题标题】:skipRecordVerification doesn't suppress ORM warningskipRecordVerification 不会抑制 ORM 警告
【发布时间】:2020-04-29 08:30:39
【问题描述】:

sails 1.2.4,水线 0.13.6,sails-postgresql 1.0.2,npm 6.14.4,macOS 10.15.4

我的最终目标是抑制 waterline 提供的警告,因为我在sails 模型中配置了一个字段为“number”,并且在 postgresql 中将其配置为“bigint”。我知道不匹配,但这就是我想要的,因为我使用这个字段作为日期时间(以毫秒为单位),我确信这些值不会超过“数字”的大小(所以没有手臂使用“大整数')。适配器在 postgresql 中创建的“真实”字段不适合此目的。

一切正常,除了sails 生成以下非常详细的日志:

您看到此警告是因为您的数据库中有不符合要求的记录 与您的模型相匹配。这通常是模型定义的结果 在没有迁移剩余数据的情况下进行了更改。但也可能是因为记录 从 Sails/Waterline 之外的某个地方在您的数据库中添加或修改 (例如 phpmyadmin 或其他应用程序)。无论哪种情况,要消除此警告, 你有几个选择。首先,您可以更改模型定义 它与数据库中的现有记录匹配。或者你可以更新/销毁 数据库中的旧记录;手动或使用迁移脚本。

(例如,要擦除所有数据,您可以只使用migrate: drop。)

更罕见的是,此警告可能意味着适配器本身存在错误。如果你 相信是这样,那么请通过打开联系这个适配器的维护者 问题,或访问http://sailsjs.com/support 寻求帮助。

我发现存在带有水线的“skipRecordVerification”选项,我将“.meta({skipRecordVerification: true})”附加到所有查询中,但每次应用程序访问数据库时仍会产生警告。

任何想法让它与“skipRecordVerification”或任何其他方式来抑制警告一起工作?

【问题讨论】:

    标签: sails.js waterline sails-postgresql


    【解决方案1】:

    我认为目前没有全局选项来解决这个问题,这真的很烦人。 我设法创建了一个解决方法,如下所示:

    1. 安装插件sails-hook-custom-blueprints
    2. 覆盖 api/blueprints 文件夹中的蓝图函数文件,您可以找到原始代码 here
    3. 在蓝图中声明后添加如下代码

    var queryOptions = parseBlueprintOptions(req);

    if (queryOptions.meta)
        queryOptions.meta['skipRecordVerification'] = true;
    else
        queryOptions.meta = { 'skipRecordVerification': true };
    

    我希望这对现在有用,直到sails 开发人员在模型设置中创建一个全局选项。

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 2017-06-10
      • 2011-03-31
      • 2019-10-22
      • 2014-12-19
      • 2021-12-27
      • 1970-01-01
      相关资源
      最近更新 更多