首页 > 解决方案 > 尝试使用 MongoDB 选择具有相同 ID 的每个文档

问题描述

所以我试图获取与相同 ID 匹配的每个文档。

这是我所做的:

app.get('/comments/:id', async (req,res)=>{
    
    let db = await connect();
    let id = req.params.id;
    console.log(id);

    let results = await db.collection('comments').find({postID: id});
    console.log(results);
    res.json(results);
});

如何发送多个具有相同 ID 的文件?我想选择postID具有相同 ID 的每个属性 在此处输入图像描述

我在连接 MongoDB 时的代码:

const { MongoClient } = require('mongodb');

let connection_string = 'mongodb+srv://user:pass@host/myFirstDatabase?retryWrites=true&w=majority';

let client = new MongoClient(connection_string, {
    useNewUrlParser: true,
    useUnifiedTopology: true
});

let db = null

export default () => {
    
    return new Promise((resolve, reject) =>{
        
        if (db /*&& client.isConnected()*/){
            resolve(db)
        }
        client.connect(err => {
            if(err){
                reject("Error while connecting: " + err)
            }
            else{
                console.log("Successful connection!")
                db = client.db("posts")
                resolve(db)
            }
        });
    })
}; 

标签: javascriptmongodb

解决方案


确保您是client从进行连接的文件中导入的。

app.get("/comments/:id", async (req, res) => {
    await client.connect();             // Simply connect() won' work.
    const db = client.db("posts");      // Specify the db here
    let id = req.params.id;
    console.log(id);

    let results = await db.collection("comments").find({ postID: id }).toArray();     // Without toArray(), it returns a cursor to the array.
    console.log(results);
    res.json(results);
});

数据库.js

const { MongoClient } = require("mongodb");

let connection_string = "mongodb+srv://admin:admin@cluster0.3ctoa.mongodb.net/myFirstDatabase?retryWrites=true&w=majority";

let client = new MongoClient(connection_string, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
});

const db = function () {
    return new Promise((resolve, reject) => {
        client.connect((err) => {
            if (err) {
                reject("Došlo je do greške prilikom spajanja: " + err);
            } else {
                resolve("Successful connection!");
            }
        });
    });
};

module.exports = { client, db };

而不是 importing connect,而是 import bothclientdbfrom db.js


推荐阅读