我正在建立一个登录系统,我遇到了一些问题,我不知道如何解决。我用find()和findOne()尝试了一些不同的选项,但在我的情况下两者都不起作用。下面是我试图解决这个问题的第一个解决方案。
router.post('/', async (req, res) => {
try {
const user = await User.find(User.username = req.body.user);
if (req.body.pass == user.password)
res.send('Login');
else
res.send('Passwords don\'t match');
} catch {
res.send('User Not Found');
}
});
此解决方案返回catch响应:User Not found。
这是我尝试过的第二种解决方案:
router.post('/', async (req, res) => {
try {
const user = await User.find(User => User.username = req.body.user);
if (req.body.pass == user.password)
res.send('Login');
else
res.send('Passwords don\'t match');
} catch {
res.send('User Not Found');
}
});
此解决方案返回:无法将属性“username”设置为null。
在这两种情况下,我都发送此请求:{“user”:“lasse”,“pass”:“lassemj”}
,它是我知道存在于我的数据库中的用户。
这是我的猫鼬模式:
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
username: {type: String, required: true},
password: {type: String, required: true}
});
module.exports = mongoose.model('Users', userSchema);
这是我的server.js
const express = require('express');
const bcrypt = require('bcrypt');
const mongoose = require('mongoose');
const userRoutes = require('./routes/users');
const loginRoutes = require('./routes/login');
if (process.env.NODE_ENV != 'production') {
require('dotenv').config();
}
const app = express();
app.use(express.json());
app.use('/users', userRoutes);
app.use('/login', loginRoutes);
mongoose.connect(process.env.DB_CONNECTION, {
useNewUrlParser: true,
useUnifiedTopology: true
});
const db = mongoose.connection;
db.on('error', error => console.error(error));
db.once('open', () => console.log('Connected to db'));
app.listen(3001);
在AFAIK中,find
方法接收一个条件,以搜索作为JSON对象的文档。要按用户名搜索用户,语法应为:
const user = await User.find({username : req.body.user});
注意,find
方法将返回一个数组而不是对象,我们可以使用findone
获取用户对象,如下所示:
const user = await User.findOne({username : req.body.user});
在这种情况下,username
在集合中应该是唯一的。
您可以从这里找到更多信息从猫鼬官方文件
文档存在,但筛选时不匹配! 您好,我在我的项目中发现了一个新错误。我正在使用nodejs后端和mongodb数据库。我正在成功插入文档。但有一个特定领域(“proje\u ortagi”)让我感到困惑。因为当我将文档过滤为“\u id”字段时。所有文件都在响应。但当我将文档过滤为“proje\u ortagi”时,有些文档并不是响应。为什么会发生这种情况?我检查“proje\u ortagi”值的
我对Spring很陌生。我有一个在Spring中编写的REST api,但我不知道如何使用自定义http响应代码返回JSON响应。 我返回一个JSON响应,如下所示: 但它总是显示200个http ok状态代码。 如何可能在void函数中返回JSON响应和自定义HTTP代码?
所以我开始和Morphia一起工作,我遇到了一个奇怪的问题。 get(moviedetails.class,id) 我得到null 当我使用:
假设我收集了以下文档: 所有文档都将始终有“水果”字段 某些文档可能没有“attributes”数组 对于属性数组中包含元素的文档,它可以是1到20个元素 我需要根据属性返回这个。数量介于4和8之间 > 即使属性字段缺失或数量标准不匹配,也始终显示id和水果 在属性数组中最多只显示2个符合搜索条件的元素,按数量降序排序 {_id:1,水果:苹果,属性:[{颜色:红色,大小:小,数量:5}]}, {
我正在试用新的Spring 4.0@RestController,以从控制器返回一个简单的文本响应: 当我访问/心跳时,我返回: 结果包括双引号,这是我没有想到的。 当我访问/heartbeat/test时,我会得到一个空响应,但我希望我还活着!文本 使现代化 卷曲-ihttp://myserver.com/rest/heartbeat HTTP/1.1 200 OK内容类型:applicatio
使用Guzzle,我正在使用JSON格式的一些外部API,通常我获取数据 $data = $request- 但是我无法从这个不同的api中获取数据。数据似乎没有出现在“响应体”中。 这个api调用有效:https://i.ibb.co/80Yk6dx/Screenshot-2.png 这不起作用:https://i.ibb.co/C239ghy/Screenshot-3.png