Guest User

Untitled

a guest
Dec 8th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. createMessage() {
  2. const variables = {
  3. userId: this.user._id,
  4. postId: this.postId,
  5. messageBody: this.message
  6. };
  7. console.log(this.message);
  8.  
  9. this.$apollo
  10. .mutate({
  11. mutation: CREATE_MESSAGE,
  12. variables,
  13. update: (cache, { data: { createMessage } }) => {
  14. const data = cache.readQuery({
  15. query: CLOSE_UP,
  16. variables: { postId: this.postId }
  17. });
  18. data.closeUp.messages.unshift(createMessage);
  19. cache.writeQuery({
  20. query: CLOSE_UP,
  21. variables: { postId: this.postId },
  22. data
  23. });
  24. }
  25. })
  26. .then(({ data }) => {
  27. console.log(data);
  28. })
  29. .catch(e => console.dir(e));
  30. }
  31.  
  32. closeUp: async (_, { postId }, { Post }) => {
  33. const post = await Post.findOne({ _id: postId }).populate({
  34. path: 'messages.messageUser',
  35. model: 'User'
  36. });
  37. console.log(post);
  38. return post;
  39.  
  40. type Token {
  41. token: String!
  42. }
  43. type User {
  44. _id: ID
  45. email: String!
  46. username: String!
  47. password: String!
  48. avatar: String
  49. joinDate: String!
  50. favorites: [Post]
  51. }
  52.  
  53. type Post {
  54. _id: ID
  55. title: String!
  56. description: String!
  57. imageUrl: String!
  58. createdBy: User!
  59. createdDate: String
  60. messages: [Message]!
  61. }
  62.  
  63. type Message {
  64. _id: ID
  65. messageBody: String!
  66. messageDate: String!
  67. messageUser: User!
  68. }
  69. type PostsPage {
  70. posts: [Post]
  71. hasMore: Boolean
  72. }
  73. type Query {
  74. getCurrentUser: User
  75. getPosts: [Post]
  76. infiniteScrollPosts(pageNum: Int!, pageSize: Int!): PostsPage
  77. closeUp(postId: ID, userId: ID): Post!
  78. }
  79.  
  80. type Mutation {
  81. addPost(
  82. title: String!
  83. description: String!
  84. creatorId: ID!
  85. imageUrl: String!
  86. createdDate: String
  87. ): Post!
  88. createUser(email: String!, username: String!, password: String!): Token
  89. signinUser(username: String!, password: String): Token
  90. createMessage(userId: ID!, postId: ID!, messageBody: String!): Message!
  91. }
  92.  
  93. const PostSchema = new mongoose.Schema({
  94. title: {
  95. type: String,
  96. required: true
  97. },
  98. description: {
  99. type: String,
  100. required: true
  101. },
  102. imageUrl: {
  103. type: String
  104. },
  105. createdBy: {
  106. type: mongoose.Schema.Types.ObjectId,
  107. required: true,
  108. ref: 'User'
  109. },
  110. createdDate: {
  111. type: Date,
  112. default: Date.now
  113. },
  114. messages: [
  115. {
  116. messageBody: {
  117. type: String,
  118. required: true
  119. },
  120. messageDate: {
  121. type: Date,
  122. default: Date.now
  123. },
  124. messageUser: {
  125. type: mongoose.Schema.Types.ObjectId,
  126. required: true,
  127. ref: 'User'
  128. }
  129. }
  130. ]
  131. });
  132.  
  133. module.exports = mongoose.model('Post', PostSchema);
  134.  
  135. const UserSchema = new mongoose.Schema({
  136. email: {
  137. type: String,
  138. required: true,
  139. trim: true
  140. },
  141. username: {
  142. type: String,
  143. required: true,
  144. trim: true
  145. },
  146. password: {
  147. type: String,
  148. required: true,
  149. trim: true
  150. },
  151. avatar: {
  152. type: String
  153. },
  154. joinDate: {
  155. type: Date,
  156. default: Date.now
  157. },
  158. favorites: {
  159. type: [mongoose.Schema.Types.ObjectId],
  160. required: true,
  161. ref: 'Post'
  162. }
  163. });
Add Comment
Please, Sign In to add comment