节点错误:无法读取未定义

时间:2017-07-29 01:02:12

标签: javascript node.js ajax mongodb mongoose

我最近一直在研究一个项目,它要求我通过查找所选内容的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');
            }
        }
    );
});

有谁知道它为什么会返回错误以及如何解决它?

1 个答案:

答案 0 :(得分:0)

默认情况下,ID定义为_id,而不仅仅是id。尝试添加下划线。