【问题标题】:Node js giving ajax request undefined value error when trying to get value from mongoose document user尝试从 mongoose 文档用户获取值时,节点 js 给出 ajax 请求未定义值错误
【发布时间】:2023-02-04 22:37:16
【问题描述】:

我写了一个节点 js 脚本,我在其中使用 ajax 请求来获取数据。我在 mongoose 中有两个文档,一个是用户,另一个是在集合中发布。现在,当我通过登录用户创建帖子并且 ajax 在 dom 中加载数据时,我得到的用户名是未定义的。我无法为此找到解决方案。这是我的代码

let createPost = function(){
        let newPostForm = $('#new-post-form');
        newPostForm.submit(function(e){
            e.preventDefault();
            $.ajax({
                type:'POST',
                url:'/posts/create-post',
                data: newPostForm.serialize(),
                success: function (data) {
                    console.log(data);
                    let postData = createNewPostDom(data.data.post);
                    $('#posts-list-container>ul').prepend(postData);
                    deletePost($('.delete-post-button',postData))
                },
                error:function(error){
                    console.log(error.responseText);
                }
            })
        });
    }

现在进入另一个显示用户名的功能

 let createNewPostDom = function(post){
        return $(`<li id="post-${ post._id}">
        
        <small><a class="delete-post-button" href="posts/delete/${post._id}">Delete</a></small>
          <h2>${post.content }</h2>
          <small> ${ post.user.name } </small>
          <div class="post-comments">
            Enter comment
            <form action="/comments/create" id="new-comment-form" method="post">
              <input
                type="text"
                name="content" 
                placeholder="enter comment"
                required
              />
              <input type="hidden" name="post" value="${ post._id }" required />
              <input type="submit" name="Post comment" />
            </form>
            
      
            <div class="post-comment-list">

            </div>
          </div>
      
      
      </li>`);

代码 ${ post.user.name } 给了我未定义的值。为此需要帮助。

【问题讨论】:

    标签: javascript node.js ajax


    【解决方案1】:

    let createNewPostDom = function(post){
      let userName = "";
      if (post.user && post.user.name) {
        userName = post.user.name;
      }
    
      return $(`<li id="post-${ post._id}">
        <small><a class="delete-post-button" href="posts/delete/${post._id}">Delete</a></small>
        <h2>${post.content }</h2>
        <small> ${ userName } </small>
        <!-- ... -->
      </li>`);
    }

    问题是 post.user 对象未定义。要解决此问题,您需要检查 post.user 对象是否存在以及是否定义了 name 属性。

    您可以通过在访问 post.user.name 之前添加条件语句来执行此操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 2013-04-11
      • 1970-01-01
      • 2015-08-20
      • 2015-09-15
      • 1970-01-01
      相关资源
      最近更新 更多