【问题标题】:how to insert values from function into graphql mutation?如何将函数中的值插入到graphql突变中?
【发布时间】:2021-09-22 00:32:21
【问题描述】:

我正在编写一个解析器,它将从对象的 json 数组中获取所有文件并将其插入到 db.have 中的 3 个字段 schema 、 userid 、 text ,这些字段在名为 getallmessages 的函数中返回。我试图使用 graphql 解析器将这 3 个值插入到消息表中。但是我收到一个错误说Cannot read property 'getallmessages' of undefined {"name":"GraphQLError"}

这是我的突变

  Mutation: {
    addMessage: async (
      _: any,
      { input }: any,
      { user }: any,
      { chatService }: any,
    ): Promise<any> => {
      console.log(input, user);
      console.log(chatService);

      const messages = await chatService.getallmessages(input.podId);

      const podmessage = await MessageModel.query()
       .insert({...messages }) // , userId: user.id })
       .returning('*');


      return podmessage;
   },
 },

getallmessages 函数返回用户 ID、文本和消息 ID

  public async getallmessages(podId: string) {
const channel = ChatService.client.channel('messaging', podId);
const messageFilter = { id: { $exists: true } };
const response = await channel.search(messageFilter);
const result = response.results.map((message) => ({
id: message.message.id,
text: message.message.text,
userId: message.message.user?.id,

}));


return result;
}

消息模型

import { BaseModel } from '@/db';

import { messageSchema } from './schema/message.schema';

export class MessageModel extends BaseModel {
  public static tableName = 'message';

  public id!: number;
  // public messageid!: number;
  public userId!: number;
  public text!: string;

  public static get jsonSchema() {
    return messageSchema;
  }
}

message.graphql

type Message {
  id: ID!
  text: String!
  userId: Int!
  createdAt: Timestamp!
}

input MessageInput {
  id: ID!
  text: String!
  userId: Int!
  podId: Int!
}


extend type Query {
  messages: [Message]!
  message(podId: ID!): Message!
}

extend type Mutation {
  addMessage(input: MessageInput!): Message!
  updateMessage(id: ID!, input: MessageInput!): Message!
}

【问题讨论】:

    标签: node.js typescript graphql


    【解决方案1】:

    您应该将ChatService 添加到解析器的context 中,它是第三个参数,而不是第四个。见Root fields & resolvers

    context 提供给每个解析器的值,其中包含重要的上下文信息,例如当前登录的用户或对数据库的访问。

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 2022-01-07
      • 2022-08-13
      • 2019-07-15
      • 2021-11-20
      • 2020-07-21
      • 2019-04-14
      • 2023-03-19
      • 2015-11-25
      相关资源
      最近更新 更多