【问题标题】:nodejs how to use findOnenodejs如何使用findOne
【发布时间】:2018-10-27 03:19:03
【问题描述】:

我是 nodejs 的新手。我正在使用 mongodb 并尝试按用户名(用户名)查找用户。 我正在使用“findOne”方法,但由于某种原因它不起作用,在console.log(admin) 中它给了我null。 我希望你们能帮助我。

**代码**

 router.post('/login',(req,res)=>{
 var name = req.body.username;
 var password = req.body.password;
 console.log(username);
 console.log(password);
  Admin.findOne({username:name}).then(admin =>{
      consol.log(admin);
     if(password == admin.username){
         console.log("worked");
     }else{
         res.json("Error!");
     }
  }).catch((err)=>{
     res.json(err);
 });    
});

【问题讨论】:

  • 你能比“它不起作用”更具体吗?
  • 你实际上并没有将任何东西传递给.findOne()
  • 你能把它改成 Admin.findOne({'searchkey':'searchValue'})... 其中 te key 是 'username' 而 value 是你要查找的用户名跨度>
  • 我已经编辑了我的问题。 @xan_z 这正是我想要得到的
  • 好的,这行得通吗?另外你用什么来连接你的数据库?猫鼬?

标签: javascript node.js mongodb


【解决方案1】:

要创建登录 API,您还需要检查 emailpassword。为此,我有一个正在使用的工作 API,并且工作正常。所以试着用这个。

var express = require('express');
var router = express.Router();
var promise = require('bluebird');

router.post('/login' , function(req , res){
   var data = req.body;
   return new promise(function(resolve , reject){
     var db = mongoClient.db();
     db.collection('uset').find({
        "email":data.email,
        "password":data.password
     }).toArray().then((result) => {
     if(result.length > 0){
       res.send({status:1 , message:"Success"});
     }
     else{
       res.send({status:0 , message:"No data found"});
    }
   });
  }).catch((err) => {
     console.log(err);
     res.send({status:0 , message:"Something went wrong." , methodName:'login'});
  })
});

注意:我已使用 Bluebird 作为承诺。

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2019-10-27
    • 2011-10-25
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多