Mon goose $ агрегат поиска не работает должным образом - PullRequest
1 голос
/ 16 февраля 2020

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

схема данных о компании

var CompanyDetailsSchema = new Schema({
    companyName: String,
    createdAt: { type: Date, default: Date.now },
    ...............
    ...............

});
module.exports = mongoose.model('Company-details', CompanyDetailsSchema);

схема транспортного средства

var VehicleDetailsSchema = new Schema({
    companyId:{
        type:mongoose.Schema.ObjectId,
        ref: 'Company-details'
    },
    createdAt: { type: Date, default: Date.now },
    ....................
    ....................
});

module.exports = mongoose.model('Vehicle-details', VehicleDetailsSchema);

Мне нужно получить все данные о компании, даже когда я получу данные об автомобиле. как в запросе SQL join, для этого я использую этот $lookup агрегат. этот пример кода возвращает все автомобили, но данные о компании пусты. как получить всю информацию о компании также в пн goose.

getVehciles:() =>{
        return new Promise((resolve, reject) => {
            VehicleDetailsSchema.aggregate([{
                $lookup: {
                    from: "Company-details", // collection name in db
                    localField: "companyId",
                    foreignField: "_id",
                    as: "companyDetails"
                }
            }]).exec(function(err, vehicles){
                if(err) {
                    reject(err)
                } else {
                    resolve(vehicles)
                }
            });
        })
    },

1 Ответ

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

попробуйте этот код работает для меня.

 getVehciles:() =>{
    return new Promise((resolve, reject) => {
        VehicleDetailsSchema.aggregate([{
            $lookup: {
                from: "company-details", // pass the callection name in small letters
                localField: "companyId",
                foreignField: "_id",
                as: "companyDetails"
            }
        }]).exec(function(err, vehicles){
            if(err) {
                reject(err)
            } else {
                resolve(vehicles)
            }
        });
    })
},
...