虚拟映像路径在局部视图中不可见



这里有点奇怪。我试图找到答案,但找不到。新建节点

问题:我的虚拟图像路径在我的视图中工作,但在我的部分视图中不起作用,即导航条。这个导航栏有一个搜索栏,它在数据库中获取多肉植物,代码如下:

let searchBar = document.getElementById("searchBar");
searchBar.addEventListener("keyup", searchDatabase);
function searchDatabase() {
const searchResults = document.getElementById("searchResults");
//Reg expressions prevent special characters and only spaces fetching from db
let match = searchBar.value.match(/^[a-zA-Z ]*/);
let match2 = searchBar.value.match(/s*/);
if (match2[0] === searchBar.value) {
searchResults.innerHTML = "";
return;
}
if (match[0] === searchBar.value) {
fetch("searchSucculents", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ payload: searchBar.value }),
})
.then((res) => res.json())
.then((data) => {
let payload = data.payload;
searchResults.innerHTML = "";
if (payload.length < 1) {
searchResults.innerHTML = "<p>No search results found</p>";
return;
} else if (searchBar.value === "") {
searchResults.innerHTML = "";
return;
} else {
payload.forEach((item, index) => {
if (index > 0) {
searchResults.innerHTML += "<hr>";
}

searchResults.innerHTML += 
`<div class="card" style="width: 18rem;">
<img src="${item.SucculentImagePath}" class="card-img-top" alt="${item.SucculentName}">
<div class="card-body">
<p class="card-text">${item.SucculentName}</p>
</div>
</div>`;      
});
}
return;
});
}
searchResults.innerHTML = "";
}

路径如下:

app.post("/searchSucculents", async (req, res) => {
let payload = req.body.payload.trim();
let search = await Succulent.find({SucculentName: {$regex: new RegExp("^"+payload+".*","i")}}).exec();
//Limit Search Results to 10
search = search.slice(0, 10);
res.send({payload: search});
})

这是我的模式中定义图像路径的部分:

succulentSchema.virtual('SucculentImagePath').get(function() {
if (this.SucculentImage != null && this.SucculentImageType != null) {
return `data:${this.SucculentImageType};charset=utf-8;base64,${this.SucculentImage.toString('base64')}`
}
})

我可以在我的完整视图中引用这个图像路径,如下所示:

<img src="<%= succulent.SucculentImagePath %>">

但是,当我试图访问导航栏中这个搜索栏中的SucculentImagePath属性时,它是未定义的。我遗漏了什么吗?

经过进一步研究,我发现在将数据解析为JSON时不能使用mongoose virtuals(我知道这是一个新手错误)。

我修复了它,通过在schema对象中添加这个选项:

toJSON: { virtuals: true } })

最新更新