如何在prisma-graphql中实现CreateMany突变解析器

时间:2019-08-04 16:37:11

标签: prisma prisma-graphql

我想写一个创建多个项目的突变解析器,它以一个项目列表作为参数。我试图使用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)}

2 个答案:

答案 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