การจัดเก็บการตั้งค่าแอพ / ไซต์ภายใน mongodb โดยใช้พังพอน

ฉันได้พัฒนาไซต์ที่ใช้ node.js ซึ่งทำงานได้สำเร็จแล้วและใช้ mongodb เป็นที่เก็บข้อมูลแบ็กเอนด์โดยใช้พังพอน

ประเด็นก็คือ ฉันต้องการใช้การตั้งค่าที่สามารถกำหนดค่าได้บางอย่างสำหรับไซต์ (ซึ่งควรจะสามารถกำหนดค่าได้โดยใช้เพจ /backend/)

ดังนั้นฉันจึงต้องหาวิธีจัดเก็บการตั้งค่าทั้งหมดเหล่านั้นโดยใช้พังพอน แต่ฉันไม่สามารถมาพร้อมกับสคีมาที่เหมาะกับสิ่งนั้นได้

var mongoose        = require('mongoose');

var SettingsSchema = new mongoose.Schema({
});

mongoose.model('Settimgs', SettingsSchema);

เป็นไปได้ไหมที่ฉันสามารถบังคับให้สคีมามีเอกสารเพียงฉบับเดียวได้ ดังนั้นฉันจึงสามารถใช้สคีมาข้างต้นกับเอกสารเพียงฉบับเดียวและใส่การตั้งค่าที่จำเป็นทั้งหมดไว้ที่นั่น

นอกเหนือจากที่ฉันมีแนวคิดอื่นที่คอลเลกชันการตั้งค่าสคีมาจะโฮสต์เอกสารหลายฉบับโดยแต่ละเอกสารมีชื่อส่วนที่ไม่ซ้ำกันดังต่อไปนี้ แต่เนื้อหาของสคีมาสำหรับแต่ละส่วนควรแตกต่างกัน แนวคิดหนึ่งที่ฉันมีคือเพียงจัดเก็บ json เฉพาะส่วนเป็นข้อมูลออบเจ็กต์โดยไม่ต้องให้รายละเอียดของโมเดล

var mongoose        = require('mongoose');

var SettingsSchema = new mongoose.Schema({
    name: { type: String, lowercase: true, trim: true, unique: true, required: true },  // the settings section name
    ...
    JSON-Object or JSON-string here?
    Is {data: Object} a possible usage?
});

mongoose.model('Settimgs', SettingsSchema);

แต่ถ้าฉันสามารถหาวิธีกำหนดโมเดลสำหรับส่วนต่างๆ ได้ มันจะดีกว่าและทดสอบได้มาก เช่น โมเดลสำหรับการตั้งค่าแบ็กเอนด์และอีกโมเดลสำหรับการตั้งค่าส่วนหน้า ซึ่งควรเก็บไว้ในคอลเลกชันการตั้งค่าทั้งหมด

ดังนั้นสิ่งที่ฉันอยากได้ก็คือ

var BackendSchema = new mongoose.Schema({
.. backend related settings here..
});

var FrontendSchema = new mongoose.Schema({
.. frontend related settings here..
});

และในที่สุดก็มีสคีมาการตั้งค่าหลักเพื่อครอบคลุมสิ่งเหล่านี้ร่วมกันและบันทึกเอกสารเหล่านั้นทั้งหมดไว้ในคอลเลกชันเดียว

ฉันค้นหามาระยะหนึ่งแล้วเพื่อดูว่ามีการอ่านที่น่าสนใจในหัวข้อนี้หรือไม่ แต่ไม่มีโชค - คงจะดีถ้าคุณสามารถโพสต์ได้ในกรณีที่คุณทราบ


person HuseyinUslu    schedule 08.05.2015    source แหล่งที่มา


คำตอบ (1)


คุณควรอ่านเกี่ยวกับ Mongoose Discriminators ที่นี่

ตามเอกสารประกอบ

ผู้เลือกปฏิบัติเป็นกลไกการสืบทอดสคีมา ช่วยให้คุณสามารถมีหลายโมเดลที่มีสคีมาทับซ้อนกันที่ด้านบนของคอลเลกชัน MongoDB พื้นฐานเดียวกัน

ฉันหวังว่าสิ่งนี้จะช่วยคุณได้

person Veldars    schedule 27.02.2019