Как получить доступ к информации, уже сохраненной в других связанных моделях ... MongoDB, NodeJS - PullRequest
1 голос
/ 25 мая 2020

Я новичок в этом, и я хочу попрактиковаться в запросах и попытался сделать совсем другое упражнение, но оно пошло не так, как я ожидал.

У меня есть три модели:

const userSchema = new Schema({
 info1: String,
 info2: String,
},


 const serviceSchema = new Schema(
{
 name: String,
 legalOwner: {
   type: Schema.Types.ObjectId,
   ref: 'User',
 },
},


const orderSchema = new Schema(
{
 client: { type: Schema.Types.ObjectId, ref: 'User' },
 service: { type: Schema.Types.ObjectId, ref: 'Service' },
 description: String
},

Мои пользователи могут вести себя как законный владелец или клиент. Я хочу показать информацию, которую пользователь ранее указывал как LegalOwner. И это уже сохранено в Mon go. Как я могу получить доступ к этим данным, есть ли для этого запрос? Нужно ли мне указывать его в моей модели Order?

 const orderSchema = new Schema(
  {
    client: { type: Schema.Types.ObjectId, ref: 'User' },
    service: { type: Schema.Types.ObjectId, ref: 'Service' },
    description: String,
    legalOwner: { type: Schema.Types.ObjectId, ref: 'Service' },

  },

Я много чего пробовал по этому запросу. Но ничего не работает ...

 await Order.findById(id).populate('service')

1 Ответ

0 голосов
/ 25 мая 2020

ObjectId хранятся как _id в mongoDb, насколько мне известно.

Попробуйте это

const query = { _id: new ObjectID(id)};

await Order.findOne(query).populate('service')

Также импортируйте ObjectID из mongodb node_module как

import { ObjectID } from 'mongodb';
...