Mongoose findOne函数返回null / undefined

lnulla 发布于 2019-11-08 json 最后更新 2019-11-08 22:59 10 浏览

/authenticate路由中的数据库中获取数据时,我总是获得null / undefined。连接成功并且用户存在于数据库中(使用Robo 3T进行检查)。这里是代码的摘录:

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);
   });
});
这是我从Postman执行的请求: enter image description here
已邀请:

aet

赞同来自:

req.body.name可能为null,因此findOne()可能会返回null

var query = user.findOne({name: req.params.name});
它取决于你的路由调用方法尝试使用req.params.name

dquis

赞同来自:

尝试在服务器上的mongo shell中进行测试。打印db.user.find();并检查您的用户

siure

赞同来自:

编辑答案: 除了json之外,要快速解析表单数据,您需要在应用程序中添加第二个正文解析器:

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 }));