Typescript “字符串插值”;无法在数组中将对象转换为基元值。toString";
我对Typescript完全陌生,但是我很惊讶Typescript “字符串插值”;无法在数组中将对象转换为基元值。toString";,typescript,Typescript,我对Typescript完全陌生,但是我很惊讶console.log可以正确地呈现我的数组,但是字符串插值都是“TypeError:cannotconvert object to primitive value…at Array.toString(native)…” 这是密码 static async createPartsListItemsInOperations(input: Array<PartsListItemQtyInput>, authToken: string):
console.log
可以正确地呈现我的数组,但是字符串插值都是“TypeError:cannotconvert object to primitive value…at Array.toString(native)…”
这是密码
static async createPartsListItemsInOperations(input: Array<PartsListItemQtyInput>, authToken: string): Promise<any> {
// console.log renders the array just fine
console.log(input);
// String interpolation results in TypeError: Cannot convert object to primitive value... at Array.toString (native)...
const query = `mutation { createPartsListItemsInOperations(input: ${input}) { ${OperationsProvider.fields} } }`;
const data = await this.execute(query, authToken);
return data['createPartsListItemsInOperations'];
}
静态异步CreatePartsListeMsinoOperations(输入:数组,authToken:string):承诺{
//console.log可以很好地渲染数组
控制台日志(输入);
//字符串插值导致TypeError:无法在Array.toString(本机)上将对象转换为基元值。。。
const query=`mutation{createpartslistitemsinooperations(输入:${input}){${OperationsProvider.fields}}}`;
const data=wait this.execute(查询,authToken);
返回数据['createPartsListItemsInOperations'];
}
在运行时,控制台看起来像
[ { operationId: '7',
catalogIdentifier: '5c9abda',
quantity: 1 },
{ operationId: '5',
catalogIdentifier: '59f7775',
quantity: 2 },
{ operationId: '4',
catalogIdentifier: '5c9abda',
quantity: 3 },
{ operationId: '5',
catalogIdentifier: '5c9ab8f',
quantity: 4 },
{ operationId: '6',
catalogIdentifier: '5c9ab8f',
quantity: 5 } ]
TypeError: Cannot convert object to primitive value
at Array.toString (native)
at Function.<anonymous> (/Users/rkuhar/work/api-gateway/src/api/operations/provider.ts:184:73)
at Generator.next (<anonymous>)
at /Users/rkuhar/work/api-gateway/src/api/operations/provider.ts:8:71
at new Promise (<anonymous>)
at __awaiter (/Users/rkuhar/work/api-gateway/src/api/operations/provider.ts:4:12)
at Function.createPartsListItemsInOperations (/Users/rkuhar/work/api-gateway/src/api/operations/provider.ts:123:16)
at createPartsListItemsInOperations (/Users/rkuhar/work/api-gateway/src/api/operations/schema.ts:321:32)
at field.resolve (/Users/rkuhar/work/api-gateway/node_modules/graphql-extensions/src/index.ts:155:61)
at resolveFieldValueOrError (/Users/rkuhar/work/api-gateway/node_modules/graphql/execution/execute.js:531:18)
[{operationId:'7',
catalogIdentifier:'5c9abda',
数量:1},
{操作ID:'5',
catalogIdentifier:'59F77775',
数量:2},
{operationId:'4',
catalogIdentifier:'5c9abda',
数量:3},
{操作ID:'5',
目录标识符:“5c9ab8f”,
数量:4},
{操作ID:'6',
目录标识符:“5c9ab8f”,
数量:5}]
TypeError:无法将对象转换为基元值
at Array.toString(本机)
在功能上。(/Users/rkuhar/work/api gateway/src/api/operations/provider.ts:184:73)
在Generator.next()处
at/Users/rkuhar/work/api-gateway/src/api/operations/provider.ts:8:71
在新的承诺()
在等待者(/Users/rkuhar/work/api gateway/src/api/operations/provider.ts:4:12)
在Function.createpartslistitemsinooperations(/Users/rkuhar/work/api gateway/src/api/operations/provider.ts:123:16)
在createPartsListItemsInOperations(/Users/rkuhar/work/api gateway/src/api/operations/schema.ts:321:32)
在field.resolve(/Users/rkuhar/work/api gateway/node_modules/graphql extensions/src/index.ts:155:61)
在resolveFieldValueOrError(/Users/rkuhar/work/api gateway/node_modules/graphql/execution/execute.js:531:18)
如何将数组输入的字符串表示形式输入到graphql查询字符串中?我认为
控制台.log
不会调用数组上的toString(),但字符串插值似乎是基于错误的。如您所见,您可以将一个数组传递给console.log
,它将以可读的形式输出。如果要调用input.toString()
,您将看到如下内容:
“[对象对象],[对象对象],[对象对象对象],[对象对象对象],[对象对象对象]”
我怀疑这不是graphql查询的有效值。在将其传递给插值之前,您可能需要将其转换为适当的值。我认为您需要将“input”参数作为json body发送,而不是在查询字符串本身中发送。您可以
JSON.stringify
将输入数组与查询字符串分开。Nah。这在那里行不通。请注意,变异调用实际上不是JSON。我需要对frickin数组进行某种类型的“toString”。结果表明,最终,这是一个解决方案,尽管是间接的。我更改了我的变异查询字符串以利用查询变量,并让TypeScript JSON对象序列化输入(JSON.stringify)。这是一个有效的graphQL查询(我一直在上游服务上通过GraphiQL运行该精确查询)…我只需要输入数组的字符串值。不过,你的推理是正确的。将console.log调用更改为console.log(inputs.toString())代码>仅在字符串插值之前显示TypeError stacktrace。谢谢,但是没有快乐。如何“stringify”输入数组?如果您只是尝试获取数组的字符串表示,那么应该能够使用JSON.stringify(输入)