javascript - 数组的内容丰富的 API 查询

标签 javascript json node.js api contentful

我正在尝试通过 Contentful API 做一些事情( npm module of the content delivery ),我不确定这是否可能。

我在 Contentful 中有一个内容类型 tag,它有 1 个字段,也称为 tag。然后,我有另一个名为 article 的内容类型,它有一个名为 tags 的多个引用字段。该字段允许编辑者将多个标签条目链接到文章。

现在,当用户加载文章时,我想通过使用标签来查找具有相同标签的其他文章来显示类似的阅读内容。

因此文章的相关 JSON 结构如下所示:

{
  sys: {...},
  fields: {
    tags: [
      {
        sys: {...},
        fields: { tag: "Football" }
      },
      {
        sys: {...},
        fields: { tag: "Leeds United" }
      },
      {
        sys: {...},
        fields: { tag: "Elland Road" }
      }
    ]
  }
}

假设用户正在阅读的文章具有标签 footballLeeds UnitedElland Road。我将如何使用 API 返回带有这 3 个标签或其中一些标签的其他文章。例如,包含所有 3 个标签的文章将是强匹配,但仅包含 1 个匹配标签的文章将是弱匹配。

我尝试使用包含规则,如下所示:

contentClient.entries({
  "content_type": "xxxxxxxx",
  "fields.tags[in]": ["football", "Leeds United"],
}, function(err, entries){
  if (err) throw err;
  console.log(entries);
});

这当然行不通,因为值为 in 的字段不是 fields.tags[in],而是 fields.tags.fields.tag

最佳答案

您可以通过确定标签的 sys.id 来实现包含查询,然后通过将字典更改为以下内容来对它们进行查询:

{
  "content_type": "xxxxxxxx",
  "fields.tags.sys.id[in]": "tagId1, tagId2",
}

内容交付模块不编码数组,因此参数需要是逗号分隔的字符串。 Content Delivery API 不支持评分,因此使用该查询您只会获得包含一个或多个标签链接的所有条目的列表,但不会以任何方式按强/弱匹配进行排序。

关于javascript - 数组的内容丰富的 API 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32722148/

相关文章:

javascript减少所有数组值的函数总和

javascript - 条形图 d3.js 顶部的圆圈

c# - 有没有办法为每个对象编写自定义 JsonConverter

java - 立即使用 jsonschema2pojo 生成的 Class 在代码中创建对象

node.js - 使用相同的 POST 请求将文件上传到 MongoDB 和本地服务器

javascript - 使用之前调用的函数填充异步数组。

javascript - 通过 Node 中的事件修改变量 - 安全吗?

php - 在php中使用json_encode打印多个表查询

json - Node.js JSON 提取某些数据

node.js - 错误!代码 ERESOLVE npm ERR! ERESOLVE 无法解析 npm ERR!在解析 : @nestjs/mongoose@8. 0.1 时