node.js - 猫鼬 ObjectId href 问题
问题描述
我的网站主页上有横幅广告(滑块),链接到特定的供应商资料页面。在测试环境中,链接按预期工作。但是当我推送到生产站点时,ObjectId 不知何故从 url 中消失了,我不确定为什么。我相信我的一些代码可能配置不正确,但我不确定是什么导致了问题。
滑块型号:
let mongoose = require("mongoose");
// SCHEMA SETUP - Sliders
let sliderSchema = new mongoose.Schema({
category: String,
images: [
{url: String, public_id: String}
],
vendorName: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "Vendor" //references user model
},
name: String
},
imageLink: String
});
module.exports = mongoose.model("Slider", sliderSchema);
滑块创建控制器:
req.body.slider.images = [];
if(req.files) {
for(const file of req.files) {
req.body.slider.images.push({
url: file.secure_url,
public_id: file.public_id
});
}
}
req.body.slider.vendorName = {
id: req.body.slider.vendorName
}
// //use req.body to create a new Slider
let slider = await Slider.create(req.body.slider);
if(req.xhr) {
res.json(slider);
} else {
res.redirect(`/slider`);
}
},
在主页上显示滑块广告的代码:
<% if (banners[0].vendorName) { %>
<a href="/vendor/<%- banners[0].vendorName.id %>">
<% } else { %>
<a href="<%- banners[0].imageLink %>">
<% } %>
<div class="banner-ad-container banner-ad-container-no-padding">
<img alt="Banner Ad" class="banner-ad lazy" data-src="https://res.cloudinary.com/abc/image/upload/w_1500,h_300,q_auto,f_auto,fl_lossy/<%- banners[0].images[0].public_id %>">
</div>
</a>
在测试时,在 Chrome 开发工具中检查我可以看到 url 正确显示为 /vendor/[ObjectId of the vendor]
但是一旦推送到生产环境(站点托管在 Heroku 上),它只会显示为 /vendor/,并且 ObjectId 会丢失。
解决方案
推荐阅读
- jquery - AJAX 请求不显示我请求的任何数据?
- vim - 编辑时可以关闭vim插件吗?
- javascript - nodejs上的服务器
- java - java中轮廓的联合
- sql - 总和问题 - 不给出单独的行总和,显示每行的总和
- reinforcement-learning - DoubleDQN 与 DQN 的性能比较
- python - request.get 在循环时返回 400 响应——即使 URL 仍然相同
- javascript - 如何使用momentjs获取特定格式?
- javascript - 类型检查和扩展运算符 (setState)
- javascript - 为什么 Angular 不允许我将参数传递给提供者的 useFactory 中的函数?