【问题标题】:Use collection get from req.params - node.js使用从 req.params 中获取的集合 - node.js
【发布时间】:2022-02-25 03:28:50
【问题描述】:

我正在使用 node.js 和 mongodb 我需要知道如何通过 API 请求读取某个集合 (day_07-07-2021 是要搜索的集合)

在我想查询集合 day07072021 的 Node.js 路由中,我想知道如何更改集合(动态)以使用通过 URL 接收的“req.param”查询路由。 所以在设置集合之后我会做 find();

每天都会有一个收藏。

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

我的实际代码是(更新后:Selva Mary),但仍然无法正常工作。

logs.js

    const express = require('express')
    const router = express.Router()
    const logs = require('../models/registry')
    
    
        router.get('/:device/:rule/:bydate', async (req, res) => {
           try {
           let byDate = req.params.bydate +"info" 
           const logues = await db.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 })
          }
        })

server.js

require('dotenv').config()

const express = require('express')
const app = express()
const mongoose = require('mongoose')
const log = mongoose.set('debug', true)


mongoose.connect('mongodb://db:27017/datainfo', { useNewUrlParser: true,useUnifiedTopology: true })
const db = mongoose.connection

const registryRouter = require('./routes/registry')
app.use('/registry', registryRouter)

我希望它清楚。

我收到消息: {"message":"db 未定义"}

【问题讨论】:

  • 你试过什么?哪个部分不起作用(获取参数?查询数据?更新数据?...等)?如果不查看您当前拥有的代码,很难提供帮助。
  • 已编辑。对不起...
  • db.collection(mycoll).find(...)。变量mycoll 是一个字符串变量,其值为“test_coll”——集合的名称。
  • 我收到消息:{"message":"db is not defined"},我已经添加了关于这个问题的更多信息,如果你能帮忙的话。

标签: node.js mongodb


【解决方案1】:

试试这个

   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 })
      }
    })

【讨论】:

  • 我收到消息:{"message":"logs.collection 不是函数"}
  • 您好,在 logs.collection(byDate) 中添加您的“db”而不是“logs”。
  • 我收到消息:{"message":"db is not defined"},我已经添加了关于这个问题的更多信息,如果你能帮忙的话。
猜你喜欢
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 2023-03-31
  • 2020-05-13
  • 1970-01-01
相关资源
最近更新 更多