javascript - 使用nodejs检查存储在mongodb中的数组中某个值的数量
问题描述
我有一个问题,因为我试图检查某个值在存储在 MongoDB 中的数组中是否可用超过 1 次。我使用的渲染模板是 EJS,因此通过数组的循环当前正在工作,但现在我正试图让它检查项目“Bandage”的数量,但我不知道如何让它工作。当您尝试删除某个项目时,该功能会被触发,因此它必须检查您拥有该特定项目的数量,然后对其进行处理。user_items 存储在存储在 MongoDb 中的数组中,<% %> + "" 用于 EJS 模板,因为它是一堆字符串,所以必须用 "" 写下来。
这是我到目前为止在 EJS 页面上尝试做的事情:
<script>
const user_items = ["<%= user.items%>"]
//Checking if item(s) exist and delete them for the browser.
function deleteitembandage(user_items){
const count = {}
const result = []
user_items.forEach(user_item => {
if (count[user_item]) {
count[user_item] +=1
if ("Bandage" > 1) {
alert('You have more then 2 Bandages')
}
return
}
count[user_item] = 1
})
for (let prop in count){
if (count[prop] >=2){
result.push(prop)
}
}
console.log(count)
return result;
}
deleteitembandage(user_items)
//Event listener delete button for bandage
document.getElementById('inventorydeletebandage').addEventListener('click', deleteitembandage)
</script>
但是,这会给我错误:未捕获的 TypeError:user_items.forEach 不是 HTMLButtonElement.deleteitembandage (inventory:105) 处的函数。
这样做的方法是什么?
解决方案
使用 array.filter 创建一个仅包含“Bandage”项目的数组。然后检查该数组的长度。确保字符串 Bandage 与数组中的内容完全相同(大写/小写)。
const bandageCount = user_items.filter(item => item === "Bandage").length
推荐阅读
- compiler-errors - 从源代码编译 PyTorch 1.10.0
- flutter - 我想调用绘图仪的下一页。但是下一页所需的变量也是下一页的信息
- mysql - 如何使用 Laravel 8 验证 MySQL 表中是否存在哈希码
- mysql - 如何查询 JSON 以进行字段匹配,并提取另一个值?
- python - 用于计算向量在不同点拆分的方差的向量化
- python - 如何使用 Jit (Numba) 并行化?
- hyperledger-fabric - 如何将数据从正在运行的 hyperledgerfabric 区块链传输到新的 hyperledgerFabric 区块链?
- python - 如何在python中从csv中选择和保存选定的列
- git - 将 git-filter-repo 应用于子树
- mysql - 如何从 SQL Server 中特定数据库的表中获取所有列名?