![](/img/trans.png)
[英]Node JS Express how can I send a 404 error if a bad request is made to third party API?
[英]How can i send a random collection whenever a GET request made in my Node.js API?
我目前正在开发一个打字应用程序,它有一个 API,它将发送这样的随机引号https://api.quotable.io/random我通过 mongodb nodejs 编写了一个 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 mongoose = require('mongoose')
var random = require('mongoose-random');
const subscriberSchema = new mongoose.Schema({
content: {
type: String,
required: true
},
subject: {
type: String,
required: true
}
})
subscriberSchema.plugin(random,{path:'r'});
mongoose.set('useCreateIndex', true);
module.exports = mongoose.model('Subscriber', subscriberSchema)
const mongoose = require('mongoose')
var random = require('mongoose-random');
const subscriberSchema = new mongoose.Schema({
content: {
type: String,
required: true
},
subject: {
type: String,
required: true
}
})
subscriberSchema.plugin(random,{path:'r'});
mongoose.set('useCreateIndex', true);
module.exports = mongoose.model('Subscriber', subscriberSchema)
如果您从集合中获取单个文档,则可以执行此操作。
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,
});
});
供你参考
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.