Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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 如何在Node.js API中发出GET请求时发送随机集合?_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 如何在Node.js API中发出GET请求时发送随机集合?

Javascript 如何在Node.js API中发出GET请求时发送随机集合?,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我目前正在开发一个类型应用程序,它有一个API,可以发送随机引号,就像这个一样。我通过mongodb nodejs和express编写了一个API,它工作得很好,但每当用户向/random发出GET请求时,我都想从数据库发送一个随机集合。我尝试了mongoose random包,但它只是返回了一个空数组。我怎么能修好它 const express = require('express') var mongoose = require('mongoose'); var random = requ

我目前正在开发一个类型应用程序,它有一个API,可以发送随机引号,就像这个一样。我通过mongodb nodejs和express编写了一个API,它工作得很好,但每当用户向/random发出GET请求时,我都想从数据库发送一个随机集合。我尝试了mongoose random包,但它只是返回了一个空数组。我怎么能修好它


const express = require('express')
var mongoose = require('mongoose');
var random = require('mongoose-random');

const router = express.Router()
const lesson = require('../models/subscriber')
// Get all subscribers
router.get('/', async (req, res) => {
  try {
    const subscribers = await lesson.find()
    res.json(subscribers)
  } catch (err) {
    res.status(500).json({ message: err.message })
  }
})
lesson.findRandom().limit(10).exec(function (err, iterat) {
    console.log(iterat);
});


// Get one subscriber
router.post('/', async (req, res) => {
  const subscriber = new lesson({
    content: req.body.content,
    subject: req.body.subject
  })

  try {
    const newSubscriber = await subscriber.save()
    res.status(201).json(newSubscriber)
  } catch (err) {
    res.status(400).json({ message: err.message })
  }
})

async function getSubscriber(req, res, next) {
  try {
    subscriber = await lesson.findById(req.params.id)
    if (subscriber == null) {
      return res.status(404).json({ message: 'Cant find subscriber'})
    }
  } catch(err){
    return res.status(500).json({ message: err.message })
  }

  res.subscriber = subscriber
  next()
}
// Update one subscriber
router.patch('/:id', getSubscriber, async (req, res) => {
  if (req.body.name != null) {
    res.subscriber.content = req.body.content
  }

  if (req.body.subject != null) {
    res.subscriber.subject = req.body.subject
  }
  try {
    const updatedSubscriber = await res.subscriber.save()
    res.json(updatedSubscriber)
  } catch {
    res.status(400).json({ message: err.message })
  }

})
router.get('/:id', getSubscriber, (req, res) => {
    res.json(res.subscriber)
})

// Delete one subscriber
router.delete('/:id', getSubscriber, async (req, res) => {
  try {
    await res.subscriber.remove()
    res.json({ message: 'Deleted This Subscriber' })
  } catch(err) {
    res.status(500).json({ message: err.message })
  }
})


module.exports = router

如果从集合中提取单个文档,则可以执行此操作

    const count = await Quote.estimatedDocumentCount();
    const random = Math.floor(Math.random() * count);
    Quote.findOne()
      .skip(random)
      .then((quote) => {
        return res.status(200).json({
          statusCode: 200,
          quote: quote,
        });
      });

供参考


如果从集合中提取单个文档,则可以执行此操作

    const count = await Quote.estimatedDocumentCount();
    const random = Math.floor(Math.random() * count);
    Quote.findOne()
      .skip(random)
      .then((quote) => {
        return res.status(200).json({
          statusCode: 200,
          quote: quote,
        });
      });

供参考


现在它说“documentCount未定义”,我解决了这个问题@YusufArdaVardar@YusufArdaVardarUpvoting可以帮助其他人。现在它说“documentCount未定义”,我解决了这个问题@YusufArdaVardar@YusufArdaVardar向上投票可以帮助其他人。