this.app.service(...).create(...) 不是函数
this.app.service(...).create(...) is not a function
我尝试发出 api 请求两次,第一次有效,但第二次失败并出现以下错误。
{
"name": "GeneralError",
"message": "this.app.service(...).create(...) is not a function",
"code": 500,
"className": "general-error",
"data": {},
"errors": {}
}
result.class.js
/* eslint-disable no-unused-vars */
const errors = require('@feathersjs/errors');
exports.Submission = class Submission {
constructor (options, app) {
this.app = app;
}
async create (data, params) {
if (Array.isArray(data)) {
return Promise.all(data.map(current => this.create(current, params)));
}
let result = await this.app.service('result').create({ //<------------- It works
sectionId: data.sectionId,
})
console.log(result) // <------------------------------------ able to show the value
(data.sub_sections).map(async sub_section =>{
(sub_section.questions).map(async question =>{
let payload = {
answerId: question.questionId
}
await this.app.service('result').create(payload) //<------------- It results in error
})
})
return data;
}
};
似乎不是 this.app.service().create()
的第二次调用导致您看到的错误。
我猜报告的特定错误消息是在您没有 console.log()
语句时发生的。这是因为缺少分号。
let result = await this.app.service('result').create({
sectionId: data.sectionId,
}) // no semi-colon here
(data.sub_sections).map(//..)
JavaScript 仅将换行符视为分号 - 即语句结束 - 如果下一个非空格字符不能解释为当前语句的延续。但在这种情况下,它可以 - 作为对前面 await
表达式结果的调用。
注意中间插入console.log()
语句时,应该会遇到类似的问题:
console.log(...) is not a function
所以在这种情况下,只需手动添加一个分号即可。
我尝试发出 api 请求两次,第一次有效,但第二次失败并出现以下错误。
{
"name": "GeneralError",
"message": "this.app.service(...).create(...) is not a function",
"code": 500,
"className": "general-error",
"data": {},
"errors": {}
}
result.class.js
/* eslint-disable no-unused-vars */
const errors = require('@feathersjs/errors');
exports.Submission = class Submission {
constructor (options, app) {
this.app = app;
}
async create (data, params) {
if (Array.isArray(data)) {
return Promise.all(data.map(current => this.create(current, params)));
}
let result = await this.app.service('result').create({ //<------------- It works
sectionId: data.sectionId,
})
console.log(result) // <------------------------------------ able to show the value
(data.sub_sections).map(async sub_section =>{
(sub_section.questions).map(async question =>{
let payload = {
answerId: question.questionId
}
await this.app.service('result').create(payload) //<------------- It results in error
})
})
return data;
}
};
似乎不是 this.app.service().create()
的第二次调用导致您看到的错误。
我猜报告的特定错误消息是在您没有 console.log()
语句时发生的。这是因为缺少分号。
let result = await this.app.service('result').create({
sectionId: data.sectionId,
}) // no semi-colon here
(data.sub_sections).map(//..)
JavaScript 仅将换行符视为分号 - 即语句结束 - 如果下一个非空格字符不能解释为当前语句的延续。但在这种情况下,它可以 - 作为对前面 await
表达式结果的调用。
注意中间插入console.log()
语句时,应该会遇到类似的问题:
console.log(...) is not a function
所以在这种情况下,只需手动添加一个分号即可。