首页 > 解决方案 > Nodejs mongodb 动态集合名称

问题描述

我有几个 mongodb 集合,

 Fruits: [ {}, {}, {} ...],
 Bread: [{}, {}, {} ...]

我想在我的服务器中使用动态集合名称,例如

// :collection will be "Fruits" or "Bread" 

app.get('/fetch/:collection', function (req, res){

    [req.params.collection].find({}, function(err, docs){
        res.json(docs)
    }) 

})

但如您所知,[req.params.collection].find()...它不起作用。如何使用动态集合名称?

标签: javascriptnode.jsmongodbmongoose

解决方案


您可以使用不同的集合使用 db.collection('name').find({})

这是我尝试过
App.js的代码

const express = require('express');
const bodyParser = require('body-parser');

const MongoClient = require("mongodb").MongoClient;
const assert = require('assert');
const url = 'mongodb://localhost:27017';
var db;

MongoClient.connect(url, { useNewUrlParser: true }, function (err, client) {
assert.equal(null, err);
console.log("Connected successfully to DB");
db = client.db('name of the db');
});

var app=express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.get('/test/:collection', function(req,res){
let collection = req.params.collection;
console.log(collection);
db.collection(collection).find({}).toArray( function (err, result) {
    res.send(result);
    });
});

var port = 8000
app.listen(port, '0.0.0.0', () => {
    console.log('Service running on port ' + port);
});

希望这可以帮助


推荐阅读