使用mongoose将值作为参数发送到mongodb中以检查是否存在

时间:2017-12-27 12:23:32

标签: node.js mongodb mongoose lambda

您好我正在使用lambda函数检查在本地运行的mongodb中的用户名和密码。

module.exports.handler = (event, context, callback) => {
  console.log('login');
  const { username, password } = JSON.parse(event.body);
  console.log("username--->",username);
  console.log("password-->",password)

  try {
    // Authenticate user
    const user = users.login(username, password);
    console.log("----->inside login handler!!!",user);

这是我发送值来检查db

的地方
login = function (username, password) {
    console.log("--------inside login of users",username,password)
    userRegister.findOne({
      username : username,
      password : password
    }).then(function(err,data){
      if (err) {
        console.log("---------------err", err)
        return _.omit(err);
      }
      else {
        console.log("---------------data", data)
        return _.omit(data);
      }
    })
  }

该值未返回任何内容,即时取消定义! 我觉得findOne不起作用了!

提前致谢

2 个答案:

答案 0 :(得分:1)

将find与用户提供的值一起使用会使您容易受到注射,例如:

#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
void largerThanN(int a[], int size, int n);
int main()
{
    int size   = 3, 
    n      = 1, 
    arr[3] = { 0,5,6 };
    largerThanN(arr, size, n);
}

void largerThanN(int a[], int size, int n) 
{
    for (int i = 0; i < size; i++) 
    {
        if (a[i] > n) 
        {
            cout << a[size] << " is greater than n " << endl;
        }
    }
}

我会使用像passport本地身份验证这样的第三方。

您至少可以通过用户名找到该用户,然后使用&#39; ===&#39;验证用户名和密码。

至于findOne返回undefined,尝试使用像Robomongo这样的工具执行相同的查询,你的语法似乎是正确的。

答案 1 :(得分:0)

为什么要匹配密码?在findOne中,我相信您应该在将密码存储到数据库之前对其进行哈希处理。如果不是我天堂般的建议这样做。使用散列库找到文档后匹配密码

 login = function (username, password) {
    console.log("--------inside login of users",username,password)
    userRegister.findOne({
      username : username // Remove password from here
    }).then(function(err,data){
      if (err) {
        console.log("---------------err", err)
        return _.omit(err);
      }
      else {
        // Match password here
        console.log("---------------data", data)
        return _.omit(data);
      }
    })
   }