【问题标题】:getting nested data from JSON array object从 JSON 数组对象获取嵌套数据
【发布时间】:2017-11-20 12:27:08
【问题描述】:

这就是我的数据的样子

 { _id: 5a114dede58f4a05cb135d96,

   messages: [
        { 
         id: 5a114c66e58f4a05cb135d8c,

         User: 'developer2', 

        _id: 5a114e26e58f4a05cb135d9b,

          texts: [{
                   _id: 5a114e26e58f4a05cb135d9d,
                   message: 'hii',
                   username: 'ruby' 
                  },
                  { 
                   _id: 5a114e40e58f4a05cb135d9e,
                   message: 'es',
                   username: 'shan' 
                  }
                                         ] } ]
                  }
     }

如何从文本中提取所有数据, 我用过这个,但这没有返回任何东西

  <% texts.messages.texts.forEach(function(text){ %>


  <p><%=text.message%></p>
   <p><%=text.username%></p>

   <% })  %>

**编辑:当我刚刚打印时

**
{ _id: 5a114dede58f4a05cb135d96,  
    messages: [ { id: 
     5a114c66e58f4a05cb135d8c,
       User: 'developer2', _id: 
     5a114e26e58f4a05cb135d9b,
      texts: [Array] } ] 
}

除非我打印出来,否则我无法看到文本中的数据

*这是我写完 texts.messages 后得到的 *

 {
texts: [{
                   _id: 5a114e26e58f4a05cb135d9d,
                   message: 'hii',
                   username: 'ruby' 
                  },
                  { 
                   _id: 5a114e40e58f4a05cb135d9e,
                   message: 'es',
                   username: 'shan' 
                  }
                                         ] } ]
                  }
     }

我将数据传输到 ejs 的路径

User.findOne({username:req.user.username},{messages:
      { $elemMatch: { 
      User:req.params.username} }},
      function(err,data){
         if (err) {
            throw err;
           } else {
            res.render("chat",{texts:data,user:founduser});
        }
       }) 

我在这里错过了什么?

【问题讨论】:

  • mongod 查询是否首先找到任何数据?
  • 是的,我检查过它正在返回整个数据
  • '

    '打印完整的数据,其中包含用户名,只有文本内的数据没有打印出来
  • 我已经详细编辑过了,现在也许你可以知道问题出在哪里了
  • Messages 是一个数组,您将其用作对象。如果您确定它是单个条目数组,则使用 texts.messages[0].texts.forEach。但是如果消息有不止一个条目,那么您还必须遍历消息。

标签: json node.js mongodb mongoose


【解决方案1】:
<% texts.messages.forEach(function(message){
message.texts.forEach(function(text){ %>


<p><%=text.message%></p>
<p><%=text.username%></p>

<% }}))  %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2019-12-01
    • 2021-09-23
    • 1970-01-01
    • 2021-10-24
    • 2017-02-13
    相关资源
    最近更新 更多