Я использовал героку для развертывания моего приложения 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"
}
Спасибо за любую помощь заранее)
Спасибо за информацию, я подозревал что-то вроде этого – asmodianis