我最近一直在研究一个项目,它要求我通过查找所选内容的ID来查找和更新我的数据库,但由于某种原因,它给了我一个"无法读取属性的错误&#34 ; ID"未定义"
这是我的.ejs文件,用户可以选择该按钮
<h1><%=term%></h1>
<article>
<% for(var i = 0; i < bars.length; i++){ %>
<section>
<div class="bars">
<p class="names"><a href = <%=bars[i].url%>><%= bars[i].name %></a></p></br>
<div class="image"><img src=<%=bars[i].image_url%> width="150px"></img></div></br>
<a id="<%= bars[i].id %>" class="going btn btn-primary"><%=bars[i].totalAttending%> Going</a></br>
<%= bars[i].location.address1 %></br>
<%= bars[i].rating %></br> //user is suppose to select here
</div>
</section>
<%}%>
</article>
这是我的index.js文件的代码,它选择对象并返回id
$(document).ready(() => {
$('.going').click(function () {
$.ajax({
type: "POST",
url: '/auth/github',
data: {
id: $(this).attr('id')
},
success: function (data) {
if (data === 'done') {
location.reload();
} else {
alert(data)
}
}
});
});
$(' input[type="submit"]').click(function(){
localStorage.lastSearch = $('input[type="text"]').val()
});
});
以下是我使用id更新数据库的方法
router.post('/', (req, res) => {
//First check to see if user is attending that bar, if so decrement
Venue.findOneAndUpdate({
id: req.data.id,
totalAttending: 1,
usersAttending: req.user.username || req.user.displayName
},
{ $set: { 'totalAttending': 0 } },
{ new: true },
(err, venue) => {
if (err) throw err;
if (!venue) {
Venue.findOneAndUpdate({ id: req.data.id },
{ $inc: { 'totalAttending': 1 }, $addToSet: { 'usersAttending': req.user.username || req.user.displayName } },
{ new: true },
(err, venue) => {
if (err) throw err;
res.send('done');
});
} else {
res.send('done');
}
}
);
});
有谁知道它为什么会返回错误以及如何解决它?
答案 0 :(得分:0)
默认情况下,ID定义为_id
,而不仅仅是id
。尝试添加下划线。