我的runner中有一个端点X,它返回包含大量对象的数组(每个对象都带有"id")参数)。最后创建的对象id总是最高的。
在运行程序的下一步中,我需要使用一些参数("id"one_answers"taskLinkKey")从端点X返回的具有最高id的对象。所以我使用这个公式将它们设置为环境变量:
const responseJson = pm.response.json();
let arr = responseJson;
let lastTask = arr.length -1;
pm.environment.set("taskId", arr[lastTask].id);
pm.environment.set("taskLinkKey", arr[lastTask].taskLinkKey);
console.log(pm.variables.get("taskId"));
console.log(pm.variables.get("taskLinkKey"));
可以看到,端点X返回的数组中最后一个对象的参数被设置为环境变量。但问题是,有时在调用端点X时,返回数组中的最后一个对象不是具有最高id的对象。我不知道为什么,我也无能为力。你能提出一个解决方案来解决这个问题吗?和";taskLinkKey"具有最高id的对象的参数作为我的环境变量(而不是在数组中的最后一个对象)?
例如:端点X返回:
[
{
"encodedKey": "8a19c3cb80fa96bb0180fad7c00f6170",
"id": 2761,
"creationDate": "2022-05-25T10:53:59+0000",
"lastModifiedDate": "2022-05-25T10:53:59+0000",
"dueDate": "2022-05-26T00:00:00+0000",
"taskLinkKey": "8a19a20c80f8e1f70180fada15401a7e"
},
{
"encodedKey": "8a19c46680f8e7b80180fa8af13c563c",
"id": 2711,
"creationDate": "2022-05-25T09:27:31+0000",
"lastModifiedDate": "2022-05-25T09:27:32+0000",
"dueDate": "2022-05-26T00:00:00+0000",
"taskLinkKey": "8a19a20c80f8e1f70180fa70f1f20337"
},
{
"encodedKey": "8a19d13180f8d7e20180fae137b431f5",
"id": 2771,
"creationDate": "2022-05-25T11:01:47+0000",
"lastModifiedDate": "2022-05-25T11:01:47+0000",
"dueDate": "2022-05-26T00:00:00+0000",
"taskLinkKey": "8a19a24680f8cdfb0180fadbb8524fc3"
},
{
"encodedKey": "8a19c46680f8e7b80180fa8af13c563e",
"id": 2712,
"creationDate": "2022-05-25T09:27:37+0000",
"lastModifiedDate": "2022-05-25T09:27:37+0000",
"dueDate": "2022-05-26T00:00:00+0000",
"taskLinkKey": "8a19be1e80f21ed60180fa8b02c9678f"
}
]
之后我想设置两个环境变量:
id: 2771
taskLinkKey: 8 a19a24680f8cdfb0180fadbb8524fc3
您需要遍历响应中的所有元素。
第一次,您设置环境变量(如果响应只有一个项,或者第一个项具有最高ID)。对于下面的每一项,检查ID是否大于已经存储的ID。如果是,则用新值覆盖。
const responseJson = pm.response.json();
let arr = responseJson;
for (var i = 0;i<arr.length;i++) {
if (!pm.environment.get("taskId")) {
pm.environment.set("taskId", arr[i].id);
pm.environment.set("taskLinkKey", arr[i].taskLinkKey);
} else if (arr[i].id > pm.environment.get("taskId")) {
pm.environment.set("taskId", arr[i].id);
pm.environment.set("taskLinkKey", arr[i].taskLinkKey);
}
}