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
Node.js 如何从调用的API获取集合名称_Node.js_Mongodb_Express_Mongoose_Mongodb Query - Fatal编程技术网

Node.js 如何从调用的API获取集合名称

Node.js 如何从调用的API获取集合名称,node.js,mongodb,express,mongoose,mongodb-query,Node.js,Mongodb,Express,Mongoose,Mongodb Query,我正在使用mongoDB开发一个NodeJS应用程序。当我调用该集合的API时,我需要帮助来获取集合名称。我想在中间件函数中使用它 我从这里得到了调用API的方法 const getmethod=req.method您需要首先创建中间件,然后获取集合列表并将其与请求绑定,如下所示 const mongoose = require('mongoose'); const connection = mongoose.connect('mongodb://localhost:27017'); cons

我正在使用mongoDB开发一个NodeJS应用程序。当我调用该集合的API时,我需要帮助来获取集合名称。我想在中间件函数中使用它

我从这里得到了调用API的方法


const getmethod=req.method

您需要首先创建
中间件
,然后获取集合列表并将其与请求绑定,如下所示

const mongoose = require('mongoose');
const connection = mongoose.connect('mongodb://localhost:27017');

const getmethod = req.method;

app.use(function(req, res, next) {
    connection.on('open', function () {
        connection.db.listCollections().toArray(function (err, names) {
            if (err) {
                console.log(err);
                //Error in get collection
                req.collectionName = '';
                mongoose.connection.close();
                next();
            } else {
                console.log(names);
                if(names.includes(getmethod)){
                    req.collectionName = getmethod;
                }else{
                    //there is no collection exist for this method
                    req.collectionName = '';
                }
                mongoose.connection.close();
                next();
            }
        });
    });
});

它将从DB返回集合列表。但每次调用api时,我只需要一个集合名称。例如,我调用api以获取客户。在这种情况下,我需要该客户集合名称的名称。@sohilpatel您可以检查您的方法是否存在于数据库中,如果是,则可以将集合名称绑定为空,否则为空,我编辑了我的答案,也许这对您有帮助