J'obtiens toujours null / undefined lors de la récupération des données de la base de données dans ma route /authenticate. La connexion est réussie et l'utilisateur existe dans la base de données (vérifié avec Robo 3T). Voici un extrait du code:

var express = require("express");
var app = express();
var router = express.Router();
var mongoose = require("mongoose");
var user = require("../models/user");
var bodyParser = require("body-parser");
app.use(bodyParser.json());

router.post('/authenticate', function(req, res) {    
   user.findOne({ name: req.body.name }).then(function(foundUser) {
       if (!foundUser) { return res.status(404).send("No user matching name"); }
       return res.status(200).json(foundUser);
   });
});

Voici la demande que j'exécute de Postman:

enter image description here

0
Limpuls 24 nov. 2017 à 13:19

3 réponses

Meilleure réponse

Réponse modifiée:

Pour express pour analyser les données de formulaire en plus de json, vous devez ajouter un deuxième analyseur de corps à votre application:

var app = require('express');
var bodyParser = require('body-parser');

// Enable express to parse body data from raw application/json data
app.use(bodyParser.json());

// Enables express to parse body data from x-www-form-encoded data
app.use(bodyParser.urlencoded({ extended: false }));
2
maxpaj 24 nov. 2017 à 13:32

Essayez de faire un test dans mongo shell sur votre serveur. Imprimer db.user.find (); et vérifiez votre utilisateur

-1
Маргарита Корнилова 24 nov. 2017 à 10:37

req.body.name il peut être nul, donc findOne() peut renvoyer nul

var query = user.findOne({name: req.params.name});

Cela dépend de la méthode d'appel de votre route, essayez d'utiliser req.params.name

0
Kalaiselvan 24 nov. 2017 à 10:59
47471086