【发布时间】:2021-12-17 13:23:48
【问题描述】:
我正在使用强循环来创建 api。但这给了我错误。我的 json 文件的属性是:
"properties": {
"id": {
"type": "Number"
},
"name": {
"type": "string",
"required": true
},
"language": {
"type": "string",
"required": false
},
"timezone": {
"type": "string",
"required": false
},
"labelId": {
"type": "number",
"required": false,
"default": 0
},
"street": {
"type": "string",
"required": false
},
"contact": {
"type": "number",
"required": false
},
"maincontact": {
"type": "number",
"required": false
},
"visitorTypes": {
"type": "array",
"required": false
},
"activeVisitorAvatar": {
"type": "boolean"
},
"activeLegalDocument": {
"type": "boolean"
},
"legalDocuments": {
"type": "array"
},
"logo": {
"type": "string",
"required": false
},
"logoType": {
"type": "string",
"required": false
},
"logoSmall": {
"type": "string",
"required": false
},
"logoSmallType": {
"type": "string",
"required": false
},
"activeSignOut": {
"type": "boolean"
},
"activePrint": {
"type": "boolean"
},
"activeScanTemperature": {
"type": "boolean"
},
"printerIp": {
"type": "string"
},
"activeVoicePrompt": {
"type": "boolean"
},
"mandatoryCompanyName": {
"type": "boolean"
},
"mandatoryPhoneNumber": {
"type": "boolean"
},
"sliders": {
"type": "array"
},
"slidersCount": {
"type": "number"
},
"accountId": {
"type": "number"
},
"visitorsignouttime": {
"type": "number"
},
"signoutLink": {
"type": "boolean"
},
"signoutnotification": {
"type": "boolean"
},
"deviceofflinenotification": {
"type": "boolean"
},
"deviceonlinenotification": {
"type": "boolean"
},
"emergencyAlert": {
"type": "object"
},
"autoSignOut": {
"type": "boolean"
},
"signOutTime": {
"type": "string"
},
"signOutPin": {
"type": "boolean"
},
"questionsEnabled": {
"type": "boolean"
},
"questions": {
"type": "array"
},
"logicalQuestionnaire": {
"type": "array"
},
"isEnableTemperatureCheck": {
"type": "boolean"
},
"disableTemperatureCheckScreen": {
"type": "boolean"
},
"isEnableQrCodeWithPinInside": {
"type": "boolean"
},
"isEnableComplianceAlerts": {
"type": "boolean"
},
"alertsWatchlistPriority": {
"type": "number"
},
"alertsCompliancePriority": {
"type": "number"
},
"eventNames": {
"type": "array"
},
"rooms": {
"type": "array"
},
"selfie": {
"type": "boolean"
},
"displayCompany": {
"type": "boolean"
},
"pagination": {
"type": "boolean"
}
},
我的身体如下:
let body = JSON.stringify({
id,
name,
street,
timezone: this.timezone,
activeVisitorAvatar,
activeLegalDocument,
legalDocuments,
visitorTypes,
activeSignOut,
activeScanTemperature,
activePrint,
printerIp,
labelId,
activeVoicePrompt,
mandatoryCompanyName,
mandatoryPhoneNumber,
mandatoryAnswersToQuestions,
visitorsignouttime,
signoutLink,
signoutnotification,
deviceofflinenotification,
deviceonlinenotification,
emergencyMessages: this.getEmergencyMessages(),
address: this.address,
autoSignOut,
signOutTime,
signOutPin,
questionsEnabled,
questions: this.getQuestions(),
logicalQuestionnaire: this.getLogicalQuestionnaire(),
accountId,
isEnableRememberMeForFullUIFlow,
isEnableTemperatureCheck,
isEnableQrCodeWithPinInside,
isEnableComplianceAlerts,
alertsWatchlistPriority,
alertsCompliancePriority,
selfie,
displayCompany,
temperatureThreshold: {
maximum: Number(temperatureMax),
minimum: Number(temperatureMin),
displayTextFormat: this.curr.temperatureThreshold.displayTextFormat,
},
pagination,
gdpr: {
isActive: this.curr.gdpr.isActive,
days: gdprDays,
},
purposes /*filter(purposes, (item) => item.id)*/,
isEnableIfThenQuestionnaire: isEnableIfThenQuestionnaire,
visitorQueueDisplay,
autoRefreshEntries: { enabled: autoRefreshEntries, interval: Number(autoRefreshEntriesInterval) },
visitor_email,
});
但我收到错误{"error":{"statusCode":400,"name":"Error","message":"Value is not a string.","stack":"Error: Value is not a string.\n at Object.validate
我被困在这里了!已尝试更改 json 文件中的数据类型,但没有帮助也无法判断是哪个参数导致错误。所有值都来自前端 html 和 angular。我的依赖如下:
"loopback": "^3.0.0",
"loopback-boot": "^2.6.5",
"loopback-component-explorer": "^2.4.0",
"loopback-component-storage": "^3.0.0",
"loopback-connector-mongodb": "3.0.1",
我正在进行的网络请求调用是:
try {
this.http
.post('/api/sites/edit?access_token=' + this.token, body, {
headers: contentHeaders,
})
.subscribe(
(response) => {
this.hideFlag = true;
this.toastr.success('Saved!');
this.http
.post(
'api/users/setFeaturesByAccountId',
{},
{
params: {
access_token: this.token,
listFeatures: this.listFeature,
accountId: this.curr.accountId,
},
},
)
.subscribe();
},
(error) => {
this.hideFlag = true;
this.toastr.error('Error');
this.showError = error.json().error;
console.log(error.text());
},
);
} catch (error) {
console.log(error);
}
【问题讨论】:
-
你能分享负责自己发出网络请求的代码
-
name的值是多少 -
@Ayzrian OG 站点是前端传递的值
-
@AbirTaheer 我已将网络调用添加到问题中。
-
您将
body变量定义为字符串化的jsonlet body = JSON.stringify({,但我怀疑http.post方法的第二个参数需要一个javascript 对象而不是字符串化的json。你试过了吗?
标签: node.js angular strongloop