Использование ссылки в Mongoose с ExpressJS - PullRequest
0 голосов
/ 05 февраля 2019

Поскольку я заметил, что глубокие вложенные массивы в документах не являются хорошей практикой, я хотел использовать references в Mongoose с использованием ExpressJS.Сейчас я делаю CMS, где есть пункты меню, которые пользователь может публиковать.Каждый пункт меню может иметь подпункты, которые пользователь также может публиковать.Но я не знаю, как использовать ссылки, чтобы я мог ссылаться между основной коллекцией элементов и коллекцией подэлементов.

Это моя модель Mongoose Main_items:

var menuItems = new mongoose.Schema({
  title : String,
  subitem: {
    type: mongoose.Types.ObjectId,
    ref: 'sub_items'
  }
}, {collection: 'menu_items'});

module.exports = mongoose.model("menu_items", menuItems);

И модель sub_items:

var subItems = new mongoose.Schema({
  title: String,
});

module.exports = mongoose.model("sub_items", subItems);

Пост пунктов main_menu

postController.postMainItems = function(req,res,item){
  var saveData = {
    title : req.body.title
  };
  var data = new item(saveData);
  saveToDB(data,res);
};

Iуже создан пост для пунктов главного меню.Это работает.Но теперь я хочу знать, как я могу разместить подэлементы, чтобы они имели прямую ссылку на каждый основной элемент

1 Ответ

0 голосов
/ 07 февраля 2019

Измените схему, как показано ниже, так что вам нужно сначала вставить main menu с помощью title, а затем подменю с title и parent(_id of parent main menu).

Схема главного меню:

var menuItems = new mongoose.Schema({
  title : String
}, {collection: 'menu_items'});

module.exports = mongoose.model("menu_items", menuItems);

Схема подменю:

var subItems = new mongoose.Schema({
  title: String,
  parent: { type: mongoose.Types.ObjectId, ref: 'menu_items'}
});

module.exports = mongoose.model("sub_items", subItems);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...