Использование заселения в мангусте - PullRequest
1 голос
/ 15 января 2020

Я новичок в понедельник goose, и я попытался заставить заполнение работать, но возвращаемое значение всегда равно нулю, как если бы ссылка не существовала в коллекции, что неверно: -)

Вот мой код:

mongoose.connect('mongodb://192.168.1.119:27017/DIM').then(() => {
  let p = mongoose.model(
    'Profile',
    new mongoose.Schema({
      _id: mongoose.Schema.Types.ObjectId,
      Name: mongoose.Schema.Types.String,
    }),
    'Profile'
  )

  let m = mongoose.model(
    'User',
    new mongoose.Schema({
      _id: mongoose.Schema.Types.ObjectId,
      Email: mongoose.Schema.Types.String,
      ProfileId: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Profile',
      },
    }),
    'User'
  )

  try {
    m.find()
      .populate('ProfileId')
      .select('ProfileId Email _id')
      .exec()
      .then(ret => {
        console.log(JSON.stringify(ret))
      })
  } catch (err) {
    console.log('Error ' + err.message)
  }
})

А вот возвращаемый результат, который я получаю:

[{"_ id": "5b3ca85a2fcf013a04594f79", "Email": "sa", "ProfileId": null}, {"_ id": "5b3ca85a2fcf013a04594f7d", "Email": "remote_log", "ProfileId": null}]

ID профиля всегда равен нулю.

Вот содержимое DB

Database

enter image description here

Я должен делать что-то глупое, но, кажется, не могу найди где.

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 января 2020

Нуль по определению означает «значение данных, которого нет в базе данных». В вашей коллекции есть что-нибудь для чтения?

0 голосов
/ 16 января 2020

Хорошо, проблема была в том, что база данных, к которой я подключался, была создана приложением c#, в котором _id был не Mon go ObjectId, а строковым GUID, поэтому мой код должен был быть адаптирован к:

    let p = mongoose.model(
    'Profile',
    new mongoose.Schema({
      _id: mongoose.Schema.Types.String,
      Name: mongoose.Schema.Types.String,
    }),
    'Profile'
  )

  let m = mongoose.model(
    'User',
    new mongoose.Schema({
      _id: mongoose.Schema.Types.String,
      Email: mongoose.Schema.Types.String,
      ProfileId: {
        type: mongoose.Schema.Types.String,
        ref: 'Profile',
      },
    }),
    'User'
  )
...