AWS CloudSearch 上传 JSON:值标签不能是数组或对象

2024-03-19

我正在运行 lambda 函数 (NodeJS) 将一些文档上传到 AWS Cloud Search。我不断收到以下错误。

{
    "errorMessage": "{ [\"The value of tags cannot be a JSON array or object\"] }",
    "errorType": "DocumentServiceException",
    "stackTrace": [
        "Object.extractError (/var/task/node_modules/aws-sdk/lib/protocol/json.js:48:27)",
        "Request.extractError (/var/task/node_modules/aws-sdk/lib/protocol/rest_json.js:37:8)",
        "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:105:20)",
        "Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:77:10)",
        "Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:678:14)",
        "Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)",
        "AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)",
        "/var/task/node_modules/aws-sdk/lib/state_machine.js:26:10",
        "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)",
        "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:680:12)"
    ]
}

我遵循的文档格式

var item = {
  type: 'add',
  id: key,
  fields: {
      userid: value.userId,
      storyid: value.storyId,
      description: value.description,
      title: value.title,
      type: 'xyz'
  }
}

这是我用来上传数据的代码

exports.handle = function(e, ctx, cb) {
  ctx.callbackWaitsForEmptyEventLoop = false;
  var documentsBatch = e.data;
  var params = {
    contentType: 'application/json',
    documents: JSON.stringify(documentsBatch)
  };
  var req = cloudsearchdomain.uploadDocuments(params, function(err, data) {
    if (err){
      // an error occurred
      cb(err, null);
    }else{
      // successful response
    }
  });
  req.send();
}

记录时我的字符串化数据看起来类似于

[
  {
    "type": "add",
    "id": "FpgAxxxxKrM4utxosPy23--KhO6FgvxK",
    "fields": {
      "userid": "FpgARscKlxaxutxosPy23",
      "storyid": "-KhxbPpRP7REEK",
      "description": "xyz ???? ????",
      "title": "umm",
      "type": "story"
    }
  },
  {
    "type": "add",
    "id": "FccccxosPy23--KiYbrrPjtJVk2bghO-W",
    "fields": {
      "userid": "FpgARfPy23",
      "storyid": "-KiYbrfggO-W",
      "description": "noo",
      "title": "lalaa out",
      "type": "story"
    }
  }
]

有人能指出我正确的方向吗?


问题出在另一个 JSON 对象上,该对象具有除字段之外的附加 JSON 属性。一旦我能够找到并删除它,一切就都正常了。应该有一个同样的 lint-er,或者 SDK 应该抛出一个更好的异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS CloudSearch 上传 JSON:值标签不能是数组或对象 的相关文章

随机推荐