【问题标题】:SailsJS V1 - Blueprint query not working correctlySailsJS V1 - 蓝图查询无法正常工作
【发布时间】:2025-12-13 06:50:02
【问题描述】:

我正在尝试为sailsjs v1 模型创建蓝图查询。

该模型是一个有 2 个“选项”的 BlogPost。一个是目标,另一个是状态。

如果目标是站点并且状态是已发布,则查询应该返回,否则不返回。我正在使用 Sails(蓝图)提供的默认 REST 路由,如果我尝试找到所有路由,一切正常。但是,如果我尝试通过 ID 查找...我什至无法找回状态为“未发布”的那些。

这是我在blueprint.js parseBlueprintOptions 中的代码 ->

parseBlueprintOptions: function (req) {

    var queryOptions = req._sails.hooks.blueprints.parseBlueprintOptions(req);
    if (queryOptions.using === 'blogpost') {
      if (req.options.blueprintAction === 'create') {
        queryOptions.newRecord.user_id = req.session.user.id;
        return queryOptions;
      } else if (req.options.blueprintAction === 'update') {
        queryOptions.criteria.where.user_id = req.session.user.id;
        queryOptions.valuesToSet.user_id = req.session.user.id;
        return queryOptions;
      } else {
        if (req.session.administrator) {
          return queryOptions;
        } else {
          queryOptions.criteria.where.blogpost_target = 'Site';
          queryOptions.criteria.where.blogpost_status = 'Published';

          console.log(queryOptions);
          return queryOptions;
        }
      }
    }
  }
};

关于为什么没有为findOne 触发查询的任何提示?正如我所说,无论状态/目标如何,它都会返回。

【问题讨论】:

  • 这是否显示任何错误消息或执行请求?
  • 没有错误。我在他们的 github 上发布,显然 findOne 只支持 ID。我可能会寻找另一种方式或覆盖默认控制器操作。

标签: javascript node.js sails.js


【解决方案1】:

嘿,'find' 返回 object array,而 'findone' 只返回一个 object。我想因此它不会起作用!

【讨论】: