简体   繁体   中英

Use collection get from req.params - node.js

I'm using node.js and mongodb I need to know how to request the reading of a certain collection via API (day_07-07-2021 is the collection to search)

in the Node.js route I wanted to query the collection day07072021, I wanted to know how I change the collection (on the fly) to query the route using the "req.param" received via URL. so after setting the collection I'll do find();

Each day will have a collection.

http://localhost:3000/registry/windows2021/1101/day07072021

My actual code is:

const express = require('express')
const router = express.Router()
const logs = require('../models/logs')


    router.get('/:device/:rule/:bydate', async (req, res) => {
       try {
        const logues = await logs.collection(req.params.bydate).find({
          'agent.name': req.params.device,
          'rule.id': req.params.rule
        }).sort({ 'id': -1 }).limit(15);
        res.json(logues)
      }
      catch (err) {
        res.status(500).json({ message: err.message })
      }
    })

I hope it was clear.

Try this

   router.get('/:device/:rule/:bydate', async (req, res) => {
       try {
let byDate = req.params.bydate +"" // this makes the bydate as string. Collection name need to be in string
        const logues = await logs.collection(byDate).find({
          'agent.name': req.params.device,
          'rule.id': req.params.rule
        }).sort({ 'id': -1 }).limit(15);
        res.json(logues)
      }
      catch (err) {
        res.status(500).json({ message: err.message })
      }
    })

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM