卡在 NodeJS mongoDB find() 查询上

Posted

技术标签:

【中文标题】卡在 NodeJS mongoDB find() 查询上【英文标题】:Stuck on NodeJS mongoDB find() Query 【发布时间】:2021-08-14 12:44:37 【问题描述】:

我无法编写正确的查询。 我正在尝试检查用户是否已存在于数据库中,它将在登录成功响应中做出响应。 这段代码在工作位置问题在于查询。 希望有人帮忙

function login() 
    app.post("/login/", async(req, res) => 

        const query = new Model(
            email: req.body.email,
            password: req.body.password,
        );
        const cursor = Model.find(query);  // (*Here's the problem*)
        console.log(cursor);
 if (query === cursor) **strong text**
            console.log(query);
            res.send("login successfully");
         else 
            console.log(query);
            res.send("user does not exist ");
        
    );


login();

// Model and Schema

const LoginSchema = new mongoose.Schema(
    email:  type: String, required: true ,
    password:  type: String, required: true ,
);
const Model = mongoose.model("login_details", LoginSchema);

// Registeration Phase
function registration() 
    app.post("/register/", async(req, res) => 
        const model = new Model(
            email: req.body.email,
            password: req.body.password,
        );
        const result = await model.save();
        console.log(result);
        res.send(model);
    );


// Headers

const express = require("express");
const app = express();
const mongoose = require("mongoose");
app.use(express.json());
app.use(express.urlencoded( extend: true ));

//


【问题讨论】:

【参考方案1】:

您以错误的方式使用 Mongoose。试试这个。

const result = await Model.find(
        email: req.body.email,
        password: req.body.password,
    ); 

【讨论】:

【参考方案2】:

你的代码有问题

1- 查询不需要使用new Model()

2- 您正在使用返回数组的.find(),请改用findOne()

3- 您正在尝试检查 mongoose 模型(带有 _id)是否等于没有 _id 的查询,这将不起作用

4- 在函数末尾使用 return(不会影响此处的功能,但最好不要遇到 cannot set headers after they're sent 之类的错误)

可能的解决方案

function login() 
  app.post("/login/", async (req, res) => 

    const cursor = await Model.findOne(
      email: req.body.email,
      password: req.body.password,
    );
    console.log(cursor);
    if (cursor) 
      console.log(cursor);
      return res.send("login successfully");
     else 
      return res.send("user does not exist ");
    
  );

【讨论】:

以上是关于卡在 NodeJS mongoDB find() 查询上的主要内容,如果未能解决你的问题,请参考以下文章

未找到NodeJS路由GET:/ find / 123

nodejs , mongo find 没有返回数据

使用nodejs在整个集合(mongodb)中搜索

如何在 Nodejs 和 Mongodb 中包含搜索

基于nodejs+mongodb实现的JWT

使用 NodeJs 的 Mongodb 地理空间查询(Haversine 公式)