Заполнить не работает, без заполнения код работает - PullRequest
0 голосов
/ 14 сентября 2018

У меня проблема с заполнением полей схемы, я пробовал много раз, но не смог разобраться в проблеме: ФУНКЦИЯ:

 function xyz (req, res) {
    User.findOne({_id: req.payload._id })
        .populate("ABC.xyzID")
        .exec((err, user) => {
        if (err) {
            return res.json ({'success': false, 'message': 'Could not retrieve ABC.'});
        }
        console.log(user);
        return res.json ({'success': true, 'message': 'ABC fetched successfully', user });
    });

}

СХЕМА:

const UserSchema = new mongoose.Schema({
    name:{
        type: String,
        required: true,
        trim: true
    },
ABC:{
        xyzID:{
            type: mongoose.Schema.Types.ObjectId,
            ref: 'xyz'
        },
},
LMN:{
          yyyID:[{
            type: mongoose.Schema.Types.ObjectId,
            ref: 'yyy'      
        }], 
         EmployeeID:[{
            type: mongoose.Schema.Types.ObjectId,
            ref: 'User'            
        }]
    }

});

здесь я могу получить доступ к: LMN.yyyID, заполнив его, но он не работает для ABC.xyzID, без заполнения я вижу xyzID, но в формате _id.Так что в основном это просто заселение, которое не работает

1 Ответ

0 голосов
/ 14 сентября 2018

Пожалуйста, посмотрите на этот дизайн схемы.Это пользователь.

// user.js

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

// Create schema
const UserSchema = new Schema({
    username: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    }
});

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

Теперь вот схема действий.Теперь, как вы можете видеть, я ссылаюсь на userId из схемы 'user'.Поэтому вам нужно убедиться, что имя вашей коллекции и имя ссылки совпадают.После этого он должен работать.

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

// Create schema
const ActivitySchema = new Schema({

    userId: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'user'
    },
    text: {
        type: String,
        required: true
    }
});

module.exports = Activity = mongoose.model('activity', ActivitySchema);

Затем попробуйте Query

Activity.findOne({_id: req.payload._id })
     .populate('userId')
     .then(result => { console.log(result); })
     .catch(err => { console.log(err); });

Вы увидите информацию о пользователе внутри объекта userId.

...