Nœud Express Jade - Case valeur booléenne
Je suis l'aide d'un Noeud+Express+Jade pour rendre certaines pages web. Sur un formulaire, il y a 2 cases à cocher. Lorsque le formulaire est envoyé par la POSTE, si la case est cochée, je reçois req.body.checkbox1 -> 'on'
, si ce n'est pas cochée, je reçois req.body.checkbox1 -> undefined
Est possible d'obtenir une case de valeur que true
ou false
?
Voici mon côté serveur test code
var bodyParser = require('body-parser');
var express = require('express');
var app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static(__dirname + '/webroot'));
app.set('views', __dirname + '/view');
app.set('view engine', 'jade');
app.listen(3001);
app.get('/', function (req, res) {
res.render('test');
});
app.post('/config', function (req, res) {
console.log(req.body.t);
console.log(req.body.f);
res.redirect('/');
});
Et ma Jade forme de test
form(action='/config', method='post')
input(type="checkbox", name="not_checked", checked=false)
input(type="checkbox", name="checked", checked=true)
input(type='submit')
Vous devez vous connecter pour publier un commentaire.
Pouvez-vous essayer la suite de jade de forme
La valeur de chaîne, de sorte que vous avez à analyser. Si la case n'est pas cochée attribut alors il ne serait pas inclus dans le poste du corps de la requête. Donc, dans la forme ci-dessus, seule la case cochée sera envoyé voir ci-dessous.
Si vous cochez les deux cases puis les deux valeurs seront envoyés en tant que ci-dessous
Vous pouvez également ajouter une validation par rapport indéfini, si aucune case n'est cochée
Je travaillais à travers cette récemment pour un projet...
Ici est de la forme :
puis dans le nœud javascript ils peuvent être trouvés par le biais de la req.corps.le nom de chaque.
req.corps.le nom sera de retour sur "on", si l'une des cases si la case est cochée. si une case n'est pas cochée, ils ne sont pas définis.
ainsi, un ternaire déclaration peut être utilisé pour créer un nouvel objet et de les enregistrer dans une base de données comme une valeur booléenne.
Espère que cela aide quelqu'un d'autre à venir le long. J'ai été heureux une fois que j'ai compris
first: !!req.body[1]
et ainsi de suite. Avec un opérateur logique not nous obtenons le contraire boolean la valeur de l'expression et de l'autre, nous la renverser en arrière. Le résultat est le même que le code de la réponse.J'ai rencontrer ce problème aujourd'hui et j'ai une solution plus propre (pour moi):