Как получить все предметы, связанные с пользователем в мангусте - PullRequest
0 голосов
/ 17 мая 2019

У меня есть коллекция Предметов, которые конкретный производитель и выполняет транзакцию.В моей схеме я связываю userId с каждым элементом.Я хочу иметь возможность отображать в виде списка все элементы, которыми владеет пользователь.

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

  {
    id: Number,
    x: Number,
    y: Number,
    xSize: String,
    ySize: String,
    imageSource: String,
    user: { type: mongoose.Schema.ObjectId, ref: 'User' }
  },
  { timestamps: true }
);

const UserSchema = new Schema(
  {
    id: Number,
    name: String,
    website: String,

  },
  { timestamps: true }
);

  Item.find({}, function (err, items) {
    var itemMap = {};
    items.forEach(function (item) {
      itemMap[item._id] = item;
    });
    var countedNames = items.reduce(function (allNames, name) {
      if (name.xSize in allNames) {
        allNames[name.xSize]++;
      }
      else {
        allNames[name.xSize] = 1;
      }
      return allNames;
    }, {});

По сути, я хочу получить список в основномговоря {имя: "Дейв", веб-сайт: "www.google.com, элементы: [item1, item2]}

, где item1 и item2 относятся к схеме элемента

1 Ответ

0 голосов
/ 17 мая 2019

Вы должны переписать свой UserSchema, чтобы он содержал ссылку на элемент в следующем формате:

const UserSchema = new Schema(
  {
    id: Number,
    name: String,
    website: String,
    items: 
    [{
       item: {type: mongoose.Schema.ObjectId, ref: 'Item'}
    }]
  },
  { timestamps: true }
);

Это просто позволит вам выполнить следующий запрос:

User.find({}).populate('Item')

Что вернет документ User и все элементы, связанные с документом.

Вы можете сделать следующее:

let users = User
    .find({})
    .populate('Item')
    .exec(function (err, users) {
       if (err) { console.log(err); }
       console.log(users)
    }

Перезапись схемы сделает запрос пользователей на их элементы оченьлегче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...