簡體   English   中英

如何在 mongoDB 文檔中查找和打印對象數組

[英]How to find and print array of objects in mongoDB document

我在 mongoDB 中有這個文檔:

{
  "_id": {
    "$oid": "628f739398580cae9c21b44f"
  },
  "events": [
    {
      "eventName": "Dans",
      "eventText": "Danse",
      "eventDate": "010101"
    },
    {
      "eventName": "Spill",
      "eventText": "Spille",
      "eventDate": "020202"
    }
  ],
  "school": "Høyskolen Kristiania"
}

我試圖在他們自己的 div 中獲取每個事件(名稱、文本和日期),但似乎無法自己訪問每個“塊”。 它們應該作為一個打印,並且僅在學校匹配的地方打印,我的目的是為每所學校制作不同的文檔並從那里通過查詢進行過濾。 不過,這不是問題。 我能夠將它們全部作為一組對象或類似對象

{
[dev:server]     _id: new ObjectId("628f739398580cae9c21b44f"),
[dev:server]     events: [ [Object], [Object] ],
[dev:server]     school: 'Høyskolen Kristiania'
[dev:server]   }

我的 API 目前看起來像這樣: 當然名稱將由 userinfo 發送,硬編碼用於測試目的。

router.get("/", async (req, res) => {
    const name = "Høyskolen Kristiania";

    const schools = await mongoDatabase
      .collection("tempschool")
      .find()
      .toArray();

    console.log(schools);

    res.json(schools);
  });

我的客戶:

function EventCard({ event }) {
  const { eventName, eventDate, eventText } = event;

  return (
    <div>
      <h1>{eventName}</h1>
      <h3>{eventDate}</h3>
      <div>{eventText}</div>
    </div>
  );
}

export function SchoolPage() {
  const {loading, error, data} = useLoader(
      async () => await fetchJSON("/api/schools")
  );

  const school = data;

  if (loading) {
    return <div>Loading...</div>;
  }
  if (error) {
    return (
        <div>Error</div>
    );
  }

  return (
      <div>
        {school.map((event) => (
            <div key={event.name}>
              <EventCard event={event}/>
            </div>
        ))}
      </div>
  );
}

我不知道您是否將tempschool創建為MongooseSchema 但是,您應該將其查詢為
const school = await TempSchool.findOne({school: "Høyskolen Kristiania"});
然后school.events會給你一個對象數組。 您將在前端使用它作為

return(
    <div>
      school.events.map((event) => (
              <div>
              <h1>{event.eventName}</h1>
              <h3>{event.eventDate}</h3>
              <div>{event.eventText}</div>
              </div>
              )
          )
    </div>
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM