我想写一个创建多个项目的突变解析器,它以一个项目列表作为参数。我试图使用map函数遍历所有项目,并在每个项目上应用create single item突变。但这是行不通的。 我的代码:
datamodel:
type Item {
id: ID!@id
title: String!
}
type Mutation {
createItem(title:String):Item // creates a single item
createMultiple(batch:[ItemCreateInput]):AggregateItem // not working
}
批处理的输入是[{title:“ abc”},{title:“ cbe”}]
prisma.graphql:
type AggregateItem {
count: Int!
}
input ItemCreateInput {
id: ID
title: String!
}
createItem(data: ItemCreateInput!): Item!
我尝试这样做:
async createMultiple(parent,args,info,ctx){
multipleItems = args.batch;
multipleItems.map(item =>
const Item = ctx.db.mutation.createItem({ // got error TypeError: Cannot read property 'mutation' of undefined
data:{...item}
},info)}
答案 0 :(得分:0)
正如@DavidW所说,您没有提供足够的信息,例如mocha.setup('bdd');
var expect = chai.expect;
function removeEnd(arr, n) {
/*
write a program remove n element last of an array
*/
var removedItems= arr.splice(arr.length-n, n);
}
console.log(removeEnd([2, 3, 1, 8, 9, 7], 3));
describe('removeEnd', () => {
it('Remove n elements from the endof an given array', () => {
expect(removeEnd([2, 3, 1, 8, 9, 7], 3)).to.eql([2, 3, 1]);
});
});
mocha.run();
配置。
根据我的猜测,您的GraphQL server
配置不正确,或者您使用的配置不正确。
要使用GraphQL server
,您需要进行以下配置
ctx.db.mutation
答案 1 :(得分:0)
您的方法实际上非常接近。我通过在每次写入数据库后使用串联来实现此功能,而不是简单地将每个突变分配给变量。
尝试这样的事情(假设args.batch是字符串列表)
async createMultiple(parent,args,info,ctx){
var items = []
multipleItems = args.batch;
multipleItems.map(item =>
items = items.concat(ctx.db.mutation.createItem({
data:{
item: item
}
}))
)
return items