Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs mongodb动态集合名称_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript Nodejs mongodb动态集合名称

Javascript Nodejs mongodb动态集合名称,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有几个mongodb系列 Fruits: [ {}, {}, {} ...], Bread: [{}, {}, {} ...] 我想在我的服务器中使用动态集合名称,如 // :collection will be "Fruits" or "Bread" app.get('/fetch/:collection', function (req, res){ [req.params.collection].find({}, function(err, docs){

我有几个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()…
不起作用。如何使用动态集合名称?

这不起作用,因为您传递的集合名称只是一个没有DB游标的变量

以下是您可以在此处执行的操作:

创建一个index.js文件,导入该文件中的所有模型,并使用专有名称作为键

例如:

假设您的请求URL现在为

/fetch/user
现在将index.js作为模型导入控制器文件中

例如:

现在,您可以在请求like和use like中将密钥作为参数传递,如下所述:

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

    model[req.params.collection].find({}, function(err, docs){
        res.json(docs) // All user data.
    }) 
})

希望这能解决你的疑问

您可以使用 db.collection('name').find({})

以下是我尝试过的代码
App.js


希望这有帮助

我会给出解决方案,但我不知道这是否符合开发人员标准

将您的模型名、fruit.js和bread.js放在模型文件夹中

app.get('/fetch/:collection', function (req, res){
let collectionName = require(`./models/${req.params.collection}`)

collectionName.find({}, function(err, docs){
    res.json(docs)
  }) 
})
希望这能奏效

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

    model[req.params.collection].find({}, function(err, docs){
        res.json(docs) // All user data.
    }) 
})
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);
});
app.get('/fetch/:collection', function (req, res){
let collectionName = require(`./models/${req.params.collection}`)

collectionName.find({}, function(err, docs){
    res.json(docs)
  }) 
})