通过复选框返回的对象 id 在 id 字符串中添加了额外的空间
Posted
技术标签:
【中文标题】通过复选框返回的对象 id 在 id 字符串中添加了额外的空间【英文标题】:object id returned via checkbox adds extra space in the id string 【发布时间】:2021-09-13 09:52:08 【问题描述】:我正在创建一个待办事项列表,当我单击复选框时,它会返回已检查项目的 id,然后使用 findByIdAndRemove 方法从我的本地 mongoose 数据库中删除该项目,但它返回的 id 有与之相关的额外空间。我首先很困惑为什么我的 id 不正确,然后经过一些调试后我发现了这个问题,但我不知道为什么会这样。当我修剪字符串的最后一个字符时,它解决了我的问题,但为什么还要添加额外的空间?
很高兴知道是什么原因造成的。
复选框返回 item._id 的 ejs 代码
<form action="/delete" method="POST">
<div class="item">
<input type="checkbox" name="checkbox" value="<%=item._id%> " onchange="this.form.submit()">
<p><%= item.name %></p>
</div>
</form>
<% ) %>
/delete 发布请求路由的 app.js 代码
app.post("/delete", function(req, res)
let checkedItemId = req.body.checkbox;
console.log(checkedItemId + "hii"); // outputs: 60dd7cafc9bfd91808c706a6 hii
// expected: 60dd7cafc9bfd91808c706a6hii
Item.findByIdAndRemove(checkedItemId, function(err)
if(!err)
console.log("successfully deleted item");
else
console.log(err);
);
res.redirect("/");
);
【问题讨论】:
【参考方案1】:value="<%=item._id%> "
这个空间导致了问题。删除它,你应该没事。
【讨论】:
以上是关于通过复选框返回的对象 id 在 id 字符串中添加了额外的空间的主要内容,如果未能解决你的问题,请参考以下文章
JS操作数组,向数组中添加数据,第二个数据总是覆盖第一个数据怎么回事
10.$和#的区别 | 11.添加对象时如何把生成的id返回