Node Lookup не возвращает агрегированные данные - PullRequest
0 голосов
/ 22 октября 2018

У меня в приложении Node 2 коллекции для встреч и клиентов, я хочу отобразить встречи, а также пользователя, связанного с ними.Я настроил как показано ниже, но я не получаю пользователя в качестве вывода.

var userSchema = new mongoose.Schema({
 firstname: String,
 surname: String,
 email: String,
});

var appointmentSchema = new mongoose.Schema({
 userID: String,
 type: Number,
 time: Date
});

Мой запрос поиска выглядит так: -

Appointment.aggregate([
    {
        $match: {"type": 1}  
    },
    {
        $lookup:{
            from: "users",
            localField: "userID",
            foreignField: "_id",
            as: "appointmentUser"
        } 
    }
], function(err,foundAppointmentUser) {
        if(err){
            console.log(err);
        } else {
            console.log(foundAppointmentUser);
        }
    });

Данные в монго здесь, назначениеданные: -

{
    "_id": {
        "$oid": "5bcc8eac7ac5980bfa365183"
    },
    "userID": "5bb4d1945480e60771ccde5a",
    "type": 1,
    "time": {
        "$date": "2018-10-22T10:00:00.000Z"
    },
    "__v": 0
}

Данные пользователя:

{
    "_id": {
        "$oid": "5bb4d1945480e60771ccde5a"
    },
    "firstname": "Stu",
    "surname": "Test 999",
    "email": "stu@stu.com",
    "created": {
        "$date": "2018-10-03T14:26:28.815Z"
    },
    "__v": 0
}

И вот результат: -

[ { _id: 5bcc8eac7ac5980bfa365183,
    userID: '5bb4d1945480e60771ccde5a',
    type: 1,
    time: 2018-10-22T10:00:00.000Z,
    __v: 0,
    appointmentUser: [] } ]

Это лучший способ получить этот типданные, а также, почему я не получаю пользовательские данные в массиве appointmentUser?Заранее спасибо.

1 Ответ

0 голосов
/ 22 октября 2018

Измените схему следующим образом: FYI, Заполните

var appointmentSchema = new mongoose.Schema({
 userID: {
   type: Schema.Types.ObjectId,
   ref: 'user'
 },
 type: Number,
 time: Date
});

Идентификатор ссылки (UserId) должен иметь тип ObjectId, а не String.

...