.populate () возвращает ноль в запросе

У меня проблема. У меня есть две модели, относящиеся к мангусте, здесь я поместил две модели

Модель запроса

'use strict'

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var RequestSchema = Schema({
    concept: String,
    description: String,
    amount: Number,
    status: String,
    checked: Boolean,
    date: { type: Date, default: Date.now },
    user: { type: Schema.Types.ObjectId, ref: 'User'},
})

module.exports = mongoose.model('Request', RequestSchema);

Модель пользователя

'use strict'

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var UserSchema = Schema({
    name: String,
    username: String,
    password: String,
    email: String,
    requested: Number,
    checked: Number,
    role: String
});

UserSchema.methods.toJSON = function() {
    var obj = this.toObject();
    delete obj.password;

    return obj;
}

module.exports = mongoose.model('User', UserSchema);

Проблема заключается в том, что при запросе списка всех запросов он возвращает их мне правильно, но это не делает меня заполненным, он возвращает его как ноль, я оставляю код, который я использую для запроса.

getRequests: function(req, res) {
        Request.find().populate('user').exec((err, requests) => {
            if(err) {
                res.json(err);
            }

            return res.status(200).send({
                status: 'success',
                requests
            });
        })
    }

Ответ, возвращаемый остальным клиентом, следующий.

{
  "status": "success",
  "requests": [
    {
      "_id": "5dd869285abf6533d04484bf",
      "concept": "Gastos generales",
      "description": "Gatos en viaje",
      "amount": 4512,
      "status": "Pendiente",
      "checked": false,
      "user": null,
      "date": "2019-11-22T23:03:04.257Z",
      "__v": 0
    }
  ]
}

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

2
задан 23.11.2019, 01:24
2 ответа

я сделал доказательства и мне следует из правильной формы populate, вероятно, что ты считаешь неправильным id в поле user ее colecciГіn Request такой

const mongoose = require('mongoose');

(async () => {
    await mongoose.connect(
        'mongodb://localhost/test',
        { useNewUrlParser: true, useCreateIndex: true, useFindAndModify: false, useUnifiedTopology: true }
    )
        .then(() => console.log('Connected to MongoDB :)'))
        .catch(error => console.error(`Could not connect to MongoDB :( ... ${error}`));

    var Schema = mongoose.Schema;

    var RequestSchema = Schema({
        concept: String,
        description: String,
        amount: Number,
        status: String,
        checked: Boolean,
        date: { type: Date, default: Date.now },
        user: { type: Schema.Types.ObjectId, ref: 'User' },
    })

    var UserSchema = Schema({
        name: String,
        username: String,
        password: String,
        email: String,
        requested: Number,
        checked: Number,
        role: String
    });

    UserSchema.methods.toJSON = function () {
        var obj = this.toObject();
        delete obj.password;

        return obj;
    }

    const User = mongoose.model('User', UserSchema);
    const Request = mongoose.model('Request', RequestSchema);

    const id = new mongoose.Types.ObjectId();
    await mongoose.connection.dropDatabase();
    await User.create({ _id: id, name: "user 1" });
    await Request.create({ description: "request", user: id });

    const result = await Request.find().populate('user');
    console.log(result);
})();

Tengo как вывод

Connected to MongoDB :)
[ { _id: 5ddf5095ee8c5c1b54a8c0ea,
    description: 'request',
    user: { _id: 5ddf5094ee8c5c1b54a8c0e8, name: 'user 1', __v: 0 },
    date: 2019-11-28T04:44:05.036Z,
    __v: 0 } ]
0
ответ дан 01.12.2019, 10:56
  • 1
    Хотя твой có я говорю, что оно может функционировать, он не отвечает вопрос OP. Когда у тебя будет достаточно reputació n ты сможешь комментировать в любом publicació n. С другой стороны, комментарий по поводу возможности того, чтобы поле user Ваших документов они не были типа ObjectId, уже это habí an помещенный в комментарии. Привет – Mauricio Contreras 28.11.2019, 10:56
  • 2
    Хотя то, что ты говоришь, правильно, не resolví в мое сомнение в, потому что в меня оно я не функционировало, но также спасибо! – Victor Bravo 28.11.2019, 21:25

disculpa из-за того, что не обновил меня situaciГіn, она soluciГіn был таким простым, что он кажется increГ-ble, despuГ©s проверки всего в деталь и того, чтобы быть 100 % безопасных, которого не habГ - во что-то с ошибкой. DecidГ - удалять базу данных, создавать новые документы и без ningГєn проблема сделала консультацию правильно, я не знаю, который был ошибкой, но эта была тот soluciГіn.

0
ответ дан 01.12.2019, 10:56
  • 1
    Точно я перемещаю это себя он делает момент. Это поведение, которое делается мне extranio. Для этого случая особенно я думаю, что это ú nica solució n. – Angel 28.11.2019, 21:26