2016-04-05 4 views
0

Я использовал героку для развертывания моего приложения mongoose, в то время как следующий агрегат возвращает правильные данные на localhost с запущенным локальным сервером mongo, он возвращает пустой результат на сервере heroku с mongolab, используемым для обрабатывайте базу данных там.

Вот сам запрос:

let projects = this.models.Project.aggregate(
[ 
    { 
     $lookup: {from: 'users', localField: 'creator', foreignField: '_id', as: 'creator'} 
    }, 

    { $unwind : "$creator" }, 

    { 
     $project: { 
      name: 1, 
      updated: { $dateToString: { format: "%Y-%m-%d", date: "$updated" } }, 
      creator: 1, 
      description: 1 
     } 
    } 
] 
) 
.exec((err, projects) => { 
console.log("fetched projects is this:", projects) 
res.send(projects); 
}); 

Здесь пользователи и проекты Схема:

let userSchema = new Schema({ 
     _id: Schema.Types.ObjectId, 
     username: String, 
     password: String, 
     email: String, 
     gender: String, 
     address: String 
    }); 

    let projectSchema = new Schema({ 
     name: String, 
     updated: { type: Date, default: Date.now }, 
     creator: {type: Schema.Types.ObjectId, ref: 'User'}, 
     description: String, 
     issues: [{type: Schema.Types.ObjectId, ref: 'Issue'}] 
    }); 

Подключение к mongolab сервер настроен правильно и работает, я был в состоянии создать пользователя и экземпляр проекта есть ,

Я думаю, что суть проблемы в том, что идентификатор документа выглядит в моем локальном хосте:

"_id" : ObjectId("56f1ace9e72b71643070e9a0") 

И как это в mongolab:

"_id": { 
    "$oid": "57030f0972365f0300c56c88" 
} 

Спасибо за любую помощь заранее)

ответ

0

В конце концов я придумал эту альтернативу, которая работает с текущим MongoLab:

resources.app.get('/projectsItems', (req, res) => { 
    let projects = this.models.Project.aggregate(
     [ 
      { 
       $project: { 
        name: 1, 
        updated: { $dateToString: { format: "%Y-%m-%d", date: "$updated" } }, 
        creator: 1, 
        description: 1 
       } 
      } 
     ] 
    ) 
    .exec((err, projects) => { 
     this.models.Project.populate(projects, {path: "creator"}, (err, projects) => { 
      console.log("fetched projects is this:", projects) 
      res.send(projects); 
     }); 
    }); 
}); 

Для получения дополнительной информации о том, как он работал выглядеть here.