J'essaie d'aller chercher des données en fonction de la valeur de 3 champs ("NKK", "NIK" et "NAMA").
VOTED-CTRL: P>
const express = require('express') const VotersCtrl = require('../controllers/voters-ctrl') const router = express.Router() router.get('/votersbyparams/:nkk/:nik/:nama', VotersCtrl.getVotersByParams) module.exports = router
3 Réponses :
Dans votre cas lorsque l'une des valeurs peut être Lire non définie code> ou vide, vous devez transmettre toutes ces valeurs dans String de requête plutôt que des parties de la route. String de requête vous donne une possibilité de ne pas passer des valeurs seulement. P>
req.Query code>
Documentation Pour obtenir une idée de la lecture de ces valeurs de la chaîne de requête. P>
Merci de votre aide. Je le combine avec des opérateurs ternaires tels que ceci: voter.find ({nkk: nkk.length> 0? Nkk: {$ existe: true}, Nik: Nik.length> 0? Nik: {$ Existe: vrai }, NAMA: nama.length> 0? NAMA: {$ existe: true}}, (err, électeurs) => code>, et cela fonctionne parfaitement.
Utiliser les paramètres de l'URL comme vous êtes (c'est-à-dire avec req.params code>), vous devez les spécifier dans l'URL comme suit:
// Browser
fetch(`${apiRoot}/votersby?nkk=${arg1}&nik=${arg3}&nama=${arg3}`)
// Server
router.get(`/votersby`, (req, res) => {
const { nkk, nik, nama } = req.params
console.log({ nkk, nik, nama })
// ...
})
Merci de votre aide. Je le combine avec des opérateurs ternaires tels que ceci: voter.find ({nkk: nkk.length> 0? Nkk: {$ existe: true}, Nik: Nik.length> 0? Nik: {$ Existe: vrai }, NAMA: nama.length> 0? NAMA: {$ existe: true}}, (err, électeurs) => code>, et cela fonctionne parfaitement.
J'ai trouvé la réponse avec l'utilisation de la chaîne de requête plutôt que dans plusieurs paramètres de route.
fonction qui gère le bouton de recherche: p> Les données de la charge utile envoient à cette API. Route: p> Enfin, un getvotersbyparams code> fonction exécuté sur le serveur: p>
getVotersByParams = async (req, res) => {
const {nkk, nik, nama} = req.query
await Voter.find({nkk : nkk.length > 0 ? nkk : {$exists : true}, nik : nik.length > 0 ? nik : {$exists : true}, nama : nama.length > 0 ? nama : {$exists : true}}, (err, voters) => {
if (err) {
return res.status(400).json({ success: false, error: err })
}
if (!voters.length) {
return res
.status(404)
.json({ success: false, error: `Voter not found` })
}
return res.status(200).json({ success: true, data: voters })
})
Où obtenez-vous l'erreur?
Ce n'est pas une erreur, en fait. Ce que l'utilisateur essaie de faire est de trouver les données sur la base de données en fonction de plusieurs paramètres. Mais, il y aura un cas où l'un des paramètres n'est pas entré par l'utilisateur dans le texte d'entrée, ce qui signifie que l'utilisateur souhaite trouver toutes les données dans tous les champs non saisis / paramètres non spécifiés correspondant aux paramètres entrés / spécifiés.