【问题标题】:Sails.js - blueprint query by if one-to-many asscoisation existsSails.js - 蓝图查询是否存在一对多关联
【发布时间】:2016-07-12 22:21:39
【问题描述】:

我过去曾问过一个关于 SO 的非常相似的问题,但我正在为这个问题苦苦挣扎。

我之前的question 是关于一对一的蓝图/水线查询,但是这是一对多的。

我有一个使用 Mongo DB 的sails.js 应用程序。我有两个具有一对多关系的模型/集合。

以以下为例,3 个 media 项目,如果其中一个有 2 个与之关联的标题...

[
  // media item 1
  {
    "titles": [
      {
        "name": "BOARDWALK1",
        "createdAt": "2016-07-12T12:12:37.946Z",
        "updatedAt": "2016-07-12T21:34:10.879Z",
        "media": "5784debe3ad51e3422887bab",
        "id": "5784deb53ad51e3422887ba8"
      },
      {
        "name": "BOARDWALK3",
        "createdAt": "2016-07-12T12:12:42.980Z",
        "updatedAt": "2016-07-12T20:59:05.054Z",
        "media": "5784debe3ad51e3422887bab",
        "id": "5784deba3ad51e3422887baa"
      }
    ],
    "name": "DEF234.mxf",
    "createdAt": "2016-07-12T12:12:46.490Z",
    "updatedAt": "2016-07-12T12:40:08.328Z",
    "mediaInfo": {
      "blah": 123
    },
    "id": "5784debe3ad51e3422887bab"
  },

  // media item 2
  {
    "titles": [],
    "name": "ABC123.mxf",
    "createdAt": "2016-07-12T12:12:49.448Z",
    "updatedAt": "2016-07-12T12:37:55.757Z",
    "id": "5784dec13ad51e3422887bac"
  },

  // media item 3
  {
    "titles": [],
    "name": "GHR87635.mxf",
    "createdAt": "2016-07-12T21:05:20.716Z",
    "updatedAt": "2016-07-12T21:05:20.716Z",
    "id": "57855b90f2d7713e22cdf17f"
  }
]

我想查询(使用蓝图,即 REST 调用)所有没有与之关联的标题的项目。

要查找关联存在的位置,您可以...

POST http://localhost:1337/media/find

{
     "where" : {
        "title" : {
            "!" : null
        }
    }
}

...但是我正在努力寻找一种查询相反的方法,其中不存在关联,例如WHERE media.titles.length === 0

非常感谢任何帮助。

【问题讨论】:

    标签: sails.js waterline sails-mongo


    【解决方案1】:

    您有正确的想法来检查数组是否为零长度。但是,使用POST 操作进行查找操作是不好的设计。在 RESTful Sails.js 蓝图路由中,POST 应仅用于创建操作。 GET 应该用于查询。

    您可以尝试使用* parameter 构造如下查询:

    GET http://localhost:1337/media?titles.length<1

    由于我无法测试您的特定 API,我希望上述方法可行。它可能需要稍作调整才能使其正常工作。您可能会发现使用像 Postman 这样的应用程序来测试查询字符串很有帮助。

    从架构的角度来看,您可能希望删除空值,以供参考,请参阅Google JSON styleguide

    如果属性是可选的或具有空值或 null 值,请考虑 从 JSON 中删除属性,除非有很强的语义 它存在的原因。

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 2015-06-27
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 2015-02-14
      • 2014-12-01
      相关资源
      最近更新 更多