Mon goose .populate (), не вызывающий изменений в модели - PullRequest
0 голосов
/ 10 марта 2020

Схема листинга:

const mongoose = require('mongoose');

const listingSchema = new mongoose.Schema({
  title: String,
  name: String,
  tel: String,
  service: String,
  description: String,
  location: Object,
  isAvailible: Boolean,
  canTravel: Boolean,
  distance: Number,
  isPublic: { type: Boolean, default: true},

  pro: { type: mongoose.Types.ObjectId, ref: 'User' }
}, { timestamps: true });


const Listing = mongoose.model('Listing', listingSchema);

module.exports = Listing;

Запрос к БД:

Listing.find({ 'title': { '$regex' : service, '$options' : 'i' } , isPublic: { $gte: true }}, async (err, listings) => {
  if (err) { return next(err); }
  await listings[0].populate('pro');
  console.log(listings[0].pro);
  res.render('search', {
    title: 'Search',
    listings: listings,
    search: {
      service: service,
      zip: zip
    }
  });
});

Снимок экрана консоли

Мне также любопытно, что лучший способ заполнить массив моделей, однако я даже не могу заставить его заполнить одну. Есть мысли?

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

присваивание постоянной переменной до того, как populate может работать так:

Listing.find({ 'title': { '$regex' : service, '$options' : 'i' } , isPublic: { $gte: true }}, async (err, listings) => {
  if (err) { return next(err); }
  const listings = await listings[0].populate('pro');
  console.log(listings.pro);
  res.render('search', {
    title: 'Search',
    listings: listings,
    search: {
      service: service,
      zip: zip
    }
  });
});
0 голосов
/ 10 марта 2020

Можете ли вы, пожалуйста, execPopulate() метод

попробуйте ниже код

Listing.find({ 'title': { '$regex' : service, '$options' : 'i' } , isPublic: { $gte: true }}, async (err, listings) => {
  if (err) { return next(err); }
  const listing=await listings[0].populate('pro').execPopulate();
  console.log(listing.pro);
  res.render('search', {
    title: 'Search',
    listings: listing,
    search: {
      service: service,
      zip: zip
    }
  });
});
...