Javascript 如何在Node.js API中发出GET请求时发送随机集合?
我目前正在开发一个类型应用程序,它有一个API,可以发送随机引号,就像这个一样。我通过mongodb nodejs和express编写了一个API,它工作得很好,但每当用户向/random发出GET请求时,我都想从数据库发送一个随机集合。我尝试了mongoose random包,但它只是返回了一个空数组。我怎么能修好它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
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向上投票可以帮助其他人。