Правильный способ использования функций fineOne (), find () в Monk - PullRequest
0 голосов
/ 16 апреля 2019

Я создаю RESTful API, используя expressjs и Monk.Есть требование, чтобы я брал несколько документов из разных коллекций (один-ко-многим).Но я не уверен, как это реализовать.

Например, мне нужно взять информацию об одном автомобиле из коллекции Cars и 4 колеса из коллекции Wheels.Я знаю, что должен использовать findOne (), чтобы найти машину, и оттуда я могу получить доступ к типу колес.

Код будет выглядеть примерно так:

var wheelType;
cars.findOne({_id: "C300"}).then((car) => {
  wheelType = car["wheeltype"];
})

Вот в чем смысл,Теперь у меня есть информация об автомобиле, но я не могу определить переменную вне области видимости, чтобы сохранить значение, и запустить новую функцию find () для сбора информации о колесах.

Конечно, я могу попробоватьсделать все в .then () так же, как это

cars.findOne({_id: "C300"}).then((car) => {
  wheels.findOne({type: car["wheeltype"][0] }).then((wheel) => {
    // combind the car with wheel
  })
})

, но что, если у меня будет больше деталей для сбора?я просто вкладываю функцию findOne ()?

Возможно, я неправильно подгоняю идею MySQL к MongoDB (есть какой-то другой способ реализации отображения один-ко-многим?).Я ожидаю что-то вроде этого:

коллекционные автомобили у нас

{
  {
    name:"c300",
    wheeltype:["A","B","C"]
  }
  {
    name:"R100",
    wheeltype:["E","F","C"]
  }
}

коллекционные колеса у нас есть

{
  {
    type:"A",
    Brand:"BestWheel"
  }
  {
    type:"C",
    Brand:"GoodWheel"
  }
}

и после манипуляции у меня это выводится

{
   name:"c300",
   wheel:{
           Brand:"BestWheel",
           type:"A"
          }
}

1 Ответ

0 голосов
/ 21 апреля 2019

Я считаю разумным вкладывать функцию findOne (), поскольку она является асинхронной функцией обратного вызова.Тогда для этого вопроса, если вы хотите реализовать что-то вроде требования, необходимо вложенное.

cars.finOne(...).then((car) =>{
  wheels.findOne(...).then((wheel) =>{
    // create a json that contains wheels in a car object.
  }
}
...