PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

ऐप के चैट भाग को कैसे व्यवस्थित करें, इसे अनुक्रमित करें?

सभी मॉडल अच्छे लगते हैं। मुद्दे संघों के साथ हैं।

यदि आप समान दो मॉडलों के बीच एक से अधिक संबद्धता को परिभाषित करते हैं, तो आपको प्रश्नों में उन्हें एक-दूसरे से अलग करने के लिए अलग-अलग उपनामों का संकेत देना चाहिए।

User.hasMany(Messages, {
foreignKey: 'senderId',
as: 'OutgoingMessages'
});

User.hasMany(Messages, {
foreignKey: 'receiverId',
as: 'IncomingMessages'
});
Messages.belongsTo(models.User, {
foreignKey: "senderId",
as: 'Sender'
});
Messages.belongsTo(models.User, {
foreignKey: "receiverId",
as: 'Receiver'
});

साथ ही एसोसिएशन को उसी तरह परिभाषित करना बेहतर है या तो सीधे मॉडल परिभाषा के बाद या स्थिर विधि जैसे associate में . बाद वाला दृष्टिकोण बेहतर है क्योंकि यह models का उपयोग करके किसी भी क्रॉस-रेफरेंस के बिना प्रत्येक मॉडल को अपने मॉड्यूल में परिभाषित करने की अनुमति देता है। associate . में पैरामीटर अन्य मॉडलों तक पहुँचने की विधि जो किसी दिए गए मॉडल से संबद्ध होनी चाहिए।

अंतिम नोट:एसोसिएशन को परिभाषित करने का प्रयास करें जहां एक एसोसिएशन परिभाषा के बाईं ओर एक मॉडल अपने associate में है विधि। इसका मतलब है कि

models.Message.belongsTo(Conversations);

Message में होना चाहिए मॉडल associate विधि:

Message.belongsTo(models.Conversations);

इस तरह आप हमेशा जानते हैं कि एक निश्चित मॉडल से दूसरे मॉडल के लिंक को परिभाषित करने वाले सभी संघों को कहां खोजना है।

अपडेट करें

संदेश बनाते समय इसका उपयोग करने के लिए आपको मिली या बनाई गई बातचीत को एक चर में संग्रहीत करना चाहिए:

let conversation = await Conversations.findOne({
  where:{
    user1:{[Op.or]:[req.user.id,post.userId]},
    user2:{[Op.or]:[req.user.id,post.userId]},
    PostId:req.body.postId,
  }
})

if (!conversation){
  conversation = await Conversations.create({
    user1: req.user.id,
    user2: post.userId,
    PostId:req.body.postId,
  })
}
const newMessage = await Messages.create({
  senderId: req.user.id,
  receiverId: post.userId,
  message: req.body.message,
  conversationId:conversation.id
})
res.status(201).send({
  msg: "upload successful",
});

then/catch को मिलाने की कोशिश न करें और await . यदि आप await use का उपयोग करते हैं आपके पास पहले से ही एक परिणाम या अपवाद होगा (जिसे आप try/catch . का उपयोग करके संभाल सकते हैं )।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgresql jsonb केस असंवेदनशील क्वेरी

  2. Django को गति दें और साधारण JSON फ़ील्ड के साथ पोस्टग्रेज करें

  3. महीने के प्रत्येक दिन के लिए महीने का कुल मूल्य निर्दिष्ट करें

  4. प्रोग्राम से कॉपी को अज्ञात कॉलम के साथ एक गतिशील तालिका में पोस्ट करें

  5. प्रश्नों को समकालिक रूप से निष्पादित करें