0

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

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

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

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

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

更罕见的是,此警告可能意味着适配器本身存在错误。如果您认为是这种情况,请通过打开问题与此适配器的维护者联系,或访问http://sailsjs.com/support寻求帮助。

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

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

4

1 回答 1

0

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

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

var queryOptions = parseBlueprintOptions(req);

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

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

于 2021-01-28T11:26:20.310 回答