可以使用req.params来搜索模型数据库

时间:2018-04-18 04:19:38

标签: javascript mongoose

我创建了一个模型,我想使用req.params在模型中搜索特定的电子邮件,但我不知道它是否有效

我试过req.body并且它有效,但是req.params和req.query都给了我错误的请求响应

我的代码

Const db    = require('./db.connect')
   mongoose = require("mongoose");
     bcrypt = require('bcryptjs');

// MONGOOSE MODEL CONFIGURATION
const UserSchema = new mongoose.Schema({


        email: {
            type: String,
        },
        password: {
            type: String,
        },
});
//presave hook .........
module.exports=mongoose.model('User', UserSchema)

我的路由器

const
 User = require("../model/user/user.js");
mongoose = required('mongoose');

app.get('/user/:email', (req,res)=>{
    return User.find({email:req.params.email})
      .then(doc=>{
        return status(200).json({doc:doc})
      }
      .catch(err=>{
      return status(400)
      }
})

我的模型包含

 app.post("/register", function (req, res) {

    var form = {
        email: req.body.email,
        password: req.body.password,
        }

    User.create(form, function (err, data) {...//do something

我从邮递员那里得到回复

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Error</title>
    </head>
    <body>
        <pre>Cannot GET /user/:email=swam124@gmail.com</pre>
    </body>
</html>

在VScode控制台上我得到了

GET /user/:email=swam124@gmail.com 404 22 142ms - 168

请帮帮我

2 个答案:

答案 0 :(得分:0)

您的VScode控制台404的路径为/user/:email=swam124@gmail.com

使用网址http://localhost:3000/user/swam124@gmail.com

替换您自己的主机和端口详细信息

答案 1 :(得分:0)

我最终找到了解决方案。我在搜索参数后添加了[] return User.find({email:req.params.email},[])并且流程运作良好

app.get('/user/:email', (req, res)=>{
        return User.find({email:req.params.email},[])  // added [] here
            .then(doc =>{
                console.log(doc)
                return status(200).json({doc:doc})
            })

            .catch(err=>{
                return res.status(400).json(err)
            })
    })

感谢帮助人员