Возврат неопределенного, когда запрос к модели - PullRequest
0 голосов
/ 21 января 2019

Я хочу получить доступ к содержимому массива документов в моей модели, но не могу и вернуть неопределенное.
вот моя модель (Project.js):

var mongoose = require('moongoose');
var Schema = mongoose.Schema;
var User = require("./Users");

var ProjectSchema = new Schema({
   name: String,
   description: String,
   owner: {
   type: mongoose.SchemaTypes.ObjectId,
      ref: "User"
   },
   contributor: [{
      type: mongoose.SchemaTypes.ObjectId,
      ref: "User"
   }]
});

module.exports = mongoose.model('Project', ProjectSchema);

и мой Api:

var Project = require('./Project')

await Project.find({owner: userId, name: name})
.then(project => {

   console.log(project);
   console.log(project.contributor);
}).catch(err => {
   res.status(500).send({
   message: err.message
   });
});

при попытке console.log (проект); возврат ожидаемого результата, но в console.log (project.contributor); возврат неопределенный

Я также искал в Интернете, но не нашел ничего правильного и ясного решения.

Я ценю любую помощь:)

Ответы [ 2 ]

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

Ваш вывод из Project.find() ( См. ) будет массивом объектов из базы данных.

Если в результате у вас будет только 1 объект, вы можете использовать project[0].contributor, поскольку project - это массив с 1 объектом внутри, который находится в индексе 0.

Если в результате может быть много объектов в массиве, вам следует выполнить итерацию по результату, чтобы получить все данные по отдельности.

project.forEach(p => console.log(p.contributor))
0 голосов
/ 21 января 2019

Поскольку вы ожидаете найти только один проект, измените метод find с помощью findOne. В другом случае вы ищете несколько проектов и собираетесь получить массив вместо объекта.

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