gpt4 book ai didi

javascript - 如何将空数据类型和数字数据类型集成到我的架构中?

转载 作者:行者123 更新时间:2023-12-02 22:23:48 25 4
gpt4 key购买 nike

我编写了一个架构,发现 EventId 响应返回为数字或 null,但乍一看我认为响应只是数字,但我错了,如下面的错误所示:AssertionError:无效类型:null(预期数量):预期 false 等于 true

如何在我的架构中容纳这两种数据类型,即数字或 null?

架构如下:

tests['Status code is 200'] = pm.response.to.have.status(200);
const schema =
{
"definitions": {},
"$schema": "http://json-schema.org/draft-06/schema#",
"$id": "http://example.com/root.json",
"type": "array",
"items": {
"$id": "#/items",
"type": "object",
"required": [
"RequestId",
"FleetGroupId",
"RecorderId",
"Status",
"DateRaised",
"DateRaisedString",
"DateRaisedISO",
"RequestedTime",
"RequestedTimeString",
"RequestedTimeISO",
"EventId",
"AlertLevel",
"Media",
"MediaList"
],
"properties": {
"RequestId": {
"$id": "#/items/properties/RequestId",
"type": "number"
},
"FleetGroupId": {
"$id": "#/items/properties/FleetGroupId",
"type": "number"
},
"RecorderId": {
"$id": "#/items/properties/RecorderId",
"type": "string",
"pattern": "^(.*)$"
},
"Status": {
"$id": "#/items/properties/Status",
"type": "string",
"pattern": "^(.*)$"
},
"DateRaised": {
"$id": "#/items/properties/DateRaised",
"type": "string",
"pattern": "^(.*)$"
},
"DateRaisedString": {
"$id": "#/items/properties/DateRaisedString",
"type": "string",
"pattern": "^(.*)$"
},
"DateRaisedISO": {
"$id": "#/items/properties/DateRaisedISO",
"type": "string",
"pattern": "^(.*)$"
},
"RequestedTime": {
"$id": "#/items/properties/RequestedTime",
"type": "string",
"pattern": "^(.*)$"
},
"RequestedTimeString": {
"$id": "#/items/properties/RequestedTimeString",
"type": "string",
"pattern": "^(.*)$"
},
"RequestedTimeISO": {
"$id": "#/items/properties/RequestedTimeISO",
"type": "string",
"pattern": "^(.*)$"
},
"EventId": {
"$id": "#/items/properties/EventId",
"type": "number"
},
"AlertLevel": {
"$id": "#/items/properties/AlertLevel",
"type": "string",
"pattern": "^(.*)$"
},
"Media": {
"$id": "#/items/properties/Media",
"type": "object",
"required": [
"Time",
"TimeString",
"TimeISOString",
"ContentType",
"MediaUrl",
"JsonUrl",
"ChannelId"
],
"properties": {
"Time": {
"$id": "#/items/properties/Media/properties/Time",
"type": "string",
"pattern": "^(.*)$"
},
"TimeString": {
"$id": "#/items/properties/Media/properties/TimeString",
"type": "string",
"pattern": "^(.*)$"
},
"TimeISOString": {
"$id": "#/items/properties/Media/properties/TimeISOString",
"type": "string",
"pattern": "^(.*)$"
},
"ContentType": {
"$id": "#/items/properties/Media/properties/ContentType",
"type": "string",
"pattern": "^(.*)$"
},
"MediaUrl": {
"$id": "#/items/properties/Media/properties/MediaUrl",
"type": "string",
"pattern": "^(.*)$"
},
"JsonUrl": {
"$id": "#/items/properties/Media/properties/JsonUrl",
"type": "string",
"pattern": "^(.*)$"
},
"ChannelId": {
"$id": "#/items/properties/Media/properties/ChannelId",
"type": "number"
}
}
},
"MediaList": {
"$id": "#/items/properties/MediaList",
"type": "array",
"items": {
"$id": "#/items/properties/MediaList/items",
"type": "object",
"required": [
"Time",
"TimeString",
"TimeISOString",
"ContentType",
"MediaUrl",
"JsonUrl",
"ChannelId"
],
"properties": {
"Time": {
"$id": "#/items/properties/MediaList/items/properties/Time",
"type": "string",
"pattern": "^(.*)$"
},
"TimeString": {
"$id": "#/items/properties/MediaList/items/properties/TimeString",
"type": "string",
"pattern": "^(.*)$"
},
"TimeISOString": {
"$id": "#/items/properties/MediaList/items/properties/TimeISOString",
"type": "string",
"pattern": "^(.*)$"
},
"ContentType": {
"$id": "#/items/properties/MediaList/items/properties/ContentType",
"type": "string",
"pattern": "^(.*)$"
},
"MediaUrl": {
"$id": "#/items/properties/MediaList/items/properties/MediaUrl",
"type": "string",
"pattern": "^(.*)$"
},
"JsonUrl": {
"$id": "#/items/properties/MediaList/items/properties/JsonUrl",
"type": "string",
"pattern": "^(.*)$"
},
"ChannelId": {
"$id": "#/items/properties/MediaList/items/properties/ChannelId",
"type": "number"
}
}
}
}
}
}
};

pm.test('Schema is valid', function() {
var response = pm.response.json();
var result = tv4.validateResult(response, schema, false, true);
pm.expect(result.valid).to.equal(true, result.valid ? null : result.error.message);
});

我现在已经做了一些研究,似乎您可以通过简单地编辑类型来拥有多种数据类型,例如

"type": ["number", "null"]

但我似乎仍然遇到相同的错误 AssertionError: Invalid type: null (expected object): Expected false to equal true..所以我想我需要代码来告诉我的模式数字或 null 是可以接受的,但是如何做什么?

最佳答案

AssertionError: Invalid type: null (expected object): expected false to equal true

表明您正在返回 null,而架构验证需要 object。如果空响应有效,您需要考虑这一点。

"type": ["object","null"]

关于javascript - 如何将空数据类型和数字数据类型集成到我的架构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59131989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com