首页 > 解决方案 > 如何使用 node.js 从 mongodb 返回整个数组(无过滤器!!!!!!)

问题描述

这是我的 mongodb 组文档。如您所见,我有一个_id,我用它来查找组本身、所有者、管理员数组和成员数组。

{
    "_id": {
        "$oid": "60c7246f61a6cc7527f815d2"
    },
    "groupName": "soogroo1",
    "creationDate": "11/06/2020",
    "premiumStatus": true,
    "phone": "08741536329995757575757575757575577575757575",
    "profilePic": "post-5f2a01e2-efe3-4fa0-8302-76bfd2d70b4b-1622806860268",
    "owner": ["9b8bcd57-06eb-471c-8910-c5b944d02431"],
    "admin": ["f2171431-627e-47a3-a65f-4abf48d361b6", "5e3df015-a1ed-4a63-a16e-83458d0e7da3", "f85baa4a-1015-4a5e-b1ed-b79001a9f277"],
    "member": ["6b1233b2-098e-480b-9462-c010c8b8de06", "0bcbb92d-6276-4118-8576-9d5f5c4ed43b"]
}

基本上我已经搜索了整个万维网,寻找我能想到的最简单的最基本的东西之一,你如何在上帝的绿地上查询一个字符串数组,并返回整个数组。我想要做的就是传入一个组 id,指定我希望返回整个成员字段,然后就可以将成员映射到前端的列表,就像你在 instagram 上关注/关注者一样.

我所看到的所有地方都是使用对象数组的人和过滤数组的人以及所有那些bs,我只想要返回字符串的整个数组字符串。请帮我把头发拉出来哈哈。

顺便说一句,我在前端使用带有 express 和 reactJS 的 nodeJS(不相关)

vvvvv RELEVANT CODE vvvvv

文件夹名称:路线

文件名:groups.js

app.get("/groups/:groupId/members", (req, res)=>{
    groups.getGroupsMembers(req.params.groupId).then(data=>{
        res.send(data) 
    })
})

文件夹名称:主

文件名:groups.js

   exports.getGroupsMembers = (groupId) => {
    return myMongo.getGroupsMemberList("groups", groupId);

};

文件夹名称:主

文件名:mongo.js

vvvvvv (损坏的部分) vvvvvv

exports.getGroupsMemberList = (collection, groupId) => {
  return db.collection(collection).findOne(
    { _id: ObjectID(groupId)},
  ).members
}

标签: node.jsmongodb

解决方案


我目前无法测试您的代码,但我想您的问题是因为您正在使用 .members 扩展查询,实际上并未从查询的返回值中获取成员属性。

exports.getGroupsMemberList = async (collection, groupId) => {
  return await (db.collection(collection).findOne(
    { _id: ObjectID(groupId)},
  )).members
}

我不确定 mongo 驱动程序是否接受 async/await,所以您可能需要通过回调来执行此操作..?


推荐阅读