卡在 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() 查询上的主要内容,如果未能解决你的问题,请参考以下文章