【发布时间】: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