का उपयोग करके पसंद/नापसंद और रेटिंग को कैसे स्टोर करना चाहिए, मेरे पास किसी आइटम और उपयोगकर्ता के लिए स्कीमा है। मैं किसी उपयोगकर्ता को किसी आइटम को पसंद या नापसंद करने की अनुमति देना चाहता हूं और मैं आइटम और साथ ही उपयोगकर्ता पर एक रेटिंग एसोसिएशन भी स्टोर करना चाहता हूं।मुझे modeoose/mongdb में node.js
var UserSchema = new Schema({
username : { type: String, required: true, index: { unique: true }
, likes : [{ type: Schema.ObjectId, ref: 'Item'}]
, dislikes : [{ type: Schema.ObjectId, ref: 'Item'}]
, ratings: [???]
});
var ItemSchema = new Schema({
name: { type: String},
, likes : [{ type: Schema.ObjectId, ref: 'User'}]
, dislikes : [{ type: Schema.ObjectId, ref: 'User'}]
, ratings: [???]
});
उपयोगकर्ता एक आइटम रेफरी स्टोर करता है, और आइटम उपयोगकर्ता को पसंद/नापसंद के लिए रेफरी करता है। मुझे यकीन नहीं है कि रेटिंग के रूप में रेटिंग को कैसे स्टोर किया जाए, क्योंकि मैं उपयोगकर्ता और मूल्य दोनों को रेट करना चाहता हूं।
item.ratings.forEach(function(rating){
<%= rating.user.username %> gave <%= item.name %> a <%= rating.value %>.
});
मैं भी आइटम एक उपयोगकर्ता रेटिंग मूल्य के साथ रेट किया है की एक सूची प्राप्त करना चाहते हैं:
user.ratings.forEach(function(rating){
<%= user.username %> has rated <%= rating.item.name %> and gave it a <%= rating.value %>
});
क्या करना चाहिए मेरी "ratings" जैसे स्कीमा देखो? क्या दो मूल्यों को स्टोर करना संभव है? उपयोगकर्ता ऑब्जेक्ट आईडी और रेटिंग मान (पूर्णांक) और इनमें से एक संग्रह है?
मेरी विधि के साथ दूसरी समस्या यह है कि मोंगोज़ अभी तक गहरे आबादी का समर्थन नहीं करता है, इसलिए मुझे इसके लिए मॉड्यूल का उपयोग करना होगा (https://github.com/JoshuaGross/mongoose-subpopulate) यह काफी हद तक अनियंत्रित है या इसे एक अलग तरीके से स्टोर करता है जिसमें घोंसले के एक से अधिक स्तर नहीं होंगे, इसलिए मैं अपना डेटा प्राप्त कर सकता हूं .populate()
कोई भी प्रतिक्रिया की सराहना की जाती है, क्योंकि मैं नया हूं NoSQL के लिए और शायद मैं इसे खत्म कर रहा हूँ।
मुझे नहीं लगता कि आप इसे अभी तक मोंगोज़ में कर सकते हैं: '.populate ('rating._item') '- यही मेरा मतलब है गहरी आबादी()। – chovy
हां आप यह कर सकते हैं यदि रेटिंग एक एम्बेड दस्तावेज़ है तो एक रेफरी नहीं है। मैं अपने कोड में यह सटीक कॉल कर रहा हूं। (पाठ्यक्रम के विभिन्न नामों के साथ) –
यदि मैं रेटिंग का उपयोग करता हूं: [रेटिंगस्केमा] - मैं इसे कैसे पॉप्युलेट करूं? मैं रेटिंग सरणी में क्या धक्का देता हूं? मुझे रेटिंग की एक अलग सरणी चाहिए - मुझे नहीं लगता कि मैं उस उपयोगकर्ता ऑब्जेक्ट में रेटिंग को एम्बेड और ढीला करना चाहता हूं जिसे मैं खोज नहीं सकता। मैं अंततः रेटिंग करना चाहता हूं। ढूँढें ({_ item: item._id}, fn); – chovy