我有3个集合:trips, moments, media_objects
每个trip
都有时间。这次旅行拥有一系列moment_ids
。
每个moment
都有一个media_object
。
客户需要一个完整的旅行对象,其中包含已有的时刻,而这些时刻需要在其中包含媒体对象,而不仅仅是持有ID。
我编写的代码在本地启动时为我本地工作,但是一旦我将其推送到生产(AWS桶),它们的工作方式就不一样了。旅行中的时刻确实作为对象存在,但瞬间的media_object只是ID。这就好像嵌套只在生产中处于一个水平。
以下是我的代码:
tripsCollection.findOne({id: tripID }, (err, trip) => {
if (err) {
reply (Boom.badRequest("Trip not found"));
return
}
if (trip.user_id != request.headers.user_id) {
reply (Boom.badRequest("You are not authorised to view this trip."));
return
}
let fullTrip = trip;
let momentsArray = [];
trip.moment_ids.forEach((moment_id) => {
// finds the moment based on moment_id
momentsCollection.findOne({id: moment_id}, (err,moment) => {
mediaObjectCollection.findOne({id: moment.media_object_id}, (err,mediaObject) => {
moment.mediaObject = mediaObject;
momentsArray.push(moment);
// when all moment_ids are converted, return the full trip object
if (trip.moment_ids.length === momentsArray.length) {
fullTrip.moments = momentsArray;
reply (fullTrip)
return
}
return moment
})
})
});
});
在观察网络标签时,我看到在生产时,当我尝试打开相同的路线时,它甚至都不会调用API,例如domain.com/trip/22 适用于本地而非生产。