2016-08-10 2 views
1

Это глупый вопрос, но я попытался обернуть голову вокруг этого через Google, фрагменты кода, учебные пособия, и все они приводят меня к примерам, в которых модели тоже мелкий для кодирования, который я хочу сделать.Попытка разработать кодировку отношений мангуста для REST API

У меня есть приложение, которое я хочу развиваться там, где данные в виде родителей и детей: - - Организация - Проекты, которые принадлежат к тем организациям - Релизы, которые принадлежат к этим проектам

и т.д. , но я не совсем понимаю, как я могу написать маршрут в выражении, который следует за иератией, и я исхожу из реляционного фона SQL. Использую ли я куки или часть маршрута? Я знаю, как создать модель, от того, что я понимаю, с помощью:

var organisationSchema = ({ 
    name: String, 
    email: String, 
    description: String, 
    users: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'User' 
    }] 
}); 

для организации и

var projectSchema = ({ 
    name: String, 
    description: String, 
    users: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'User' 
    }] 
} 

для проекта, но тогда, как я настроил свой пост маршрут, чтобы добавить проект правильная организация

router.route('/api/project') 
    .post(function(req, res){ 
     project = new Project(); 
     project.name = req.body.name; 
     project.organisation = req.body.organisation;  
      if (err) 
       res.send(err); 


     }) 

     project.save(function(err){ 
      if (err) 
       res.send(err); 

      res.json({ message: 'Project ' + project.name + ' created.'}); 
     }) 
    }) 

Нужен ли файл cookie для заполнения организации в этом примере?

ответ

1

Если ваши проекты принадлежат организациям, вы либо захотите включить в свою организационную схему массив objectIds, который будет содержать идентификаторы проектов или поле в вашей схеме проекта, которое будет содержать соответствующий идентификатор организации.

Вы можете отправить соответствующую организацию в теле, как есть, или в параметрах URL.

Например, что-то похожее на это:

router.route('/api/:organizationId/project') 
    .post(function(req, res, next) { 
     var project = new Project({ 
      name: req.body.name, 
      organization: req.params.organizationId 
     }); 

     if(err) { return next(err); } 

     project.save(function(err, savedProject) { 
      if(err) { return next(err); } 

      return res.status(200).json({ message: "Project " + savedProject.name + " created." }); 
     } 
    } 

Если вы обратите внимание на модели связи/передачи сообщений и маршрутов в этом хранилище, это может помочь: https://github.com/joshuaslate/mern-starter/tree/master/server

+0

Это прекрасно работает, теперь следующий вещь, которую я пытаюсь получить, - это добавление этого проекта в организацию. Я все еще обдумываю лучшие практики, но я думаю, что для моего контекста я бы хотел сохранить проекты внутри организаций, поскольку они являются одной организацией для многих отношений проекта. Будет ли поиск идентификатора и добавление нового идентификатора проекта в массив проектов организации? –

Смежные вопросы