如何解决Graphql apollo 服务器订阅不会推送异步突变,但它可以同步突变
当我在异步突变结果中推送新消息时
data: null
但我可以在没有问题的情况下推送同步突变。 我想你使用异步突变 baceuse 我想递归地访问数据
异步突变 (它在这里不起作用,实际上有效但不推送任何数据)
createNewMessage: async (parent,args,context,info) => {
try {
var newMessage = new Message({
...args.messageInput,isSent: false,isReceived: false,isReaden: false,});
await newMessage.save();
const messages = await Message.find({ toRoomId: args.messageInput.toRoomId });
let room = await Room.findById( args.messageInput.toRoomId);
room.roomMessages.push(newMessage);
room.unReadMessagesCount = room.unReadMessagesCount+1;
// rooms for subcription
const rooms = await Room.find({
'roomParticipants':{ $in:[
mongoose.Types.ObjectId(args.messageInput.author)
]}
}).sort('-createdAt');
pubSub.publish(LAST_ROOMS_MESSAGE_CHANNEL,{lastRoomMessages:transformRooms(rooms),toUserIds: room.roomParticipants})
return transformSingleMessage(newMessage);
} catch (err) {
throw err;
}
Than-catch 突变 (它有效,但我不想使用导管)
createNewMessage: (parent,info) =>{
const newMessage = new Message({
...args.messageInput,});
return newMessage.save()
.then(message=>{
const room = Room.findById( message.toRoomId);
return room
})
.then(room=>{
room.roomMessages.push(newMessage);
return room
.save()
.then(room=>{
const rooms = Room.find({
'roomParticipants':{ $in:[
mongoose.Types.ObjectId(newMessage.author)
]}
})
return rooms
.then((rooms)=>{
pubSub.publish(LAST_ROOMS_MESSAGE_CHANNEL,toUserIds: room.roomParticipants})
return newMessage
})
})
})
.catch(err=>{
throw err;
})
},
我该如何解决这个问题。有人帮我好吗?谢谢...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。