gpt4 book ai didi

javascript - 如何在 Mongoose 中使用 findOne()

转载 作者:行者123 更新时间:2023-11-30 06:11:18 24 4
gpt4 key购买 nike

我有 node.js 代码并使用 mongoose。我没有收到任何错误,只是成功登录

这几天我一直在尝试解决这个问题,我尝试了很多方法但都没有用。

这是服务器代码:

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const model = require('.//models/schema');

app.use(express.static('public'));

app.get('/register', function(request, response) {
response.sendFile(__dirname + '/html/register.html');
});

app.get('/login', function(request, response){
response.sendFile(__dirname + '/html/login.html')
});

const listener = app.listen(3000, function() {
let myURL = new URL(`localhost:${listener.address().port}/register`);
console.log(myURL.href);
});

mongoose.connect(`mongodb://localhost${listener.address().port}:/register`, {
useNewUrlParser: true,
useUnifiedTopology: true
});

app.use(bodyParser.urlencoded({
extended: false
}));

app.use(bodyParser.json());

app.post('/submit-data', async (req, res) => {
res.redirect('/login')
try {
const newUser = new model({
'login': req.body.login,
'password': req.body.password,
'gender': req.body.gender,
'birthday': req.body.birthday
});

await newUser.save();
console.log('User registered');
} catch {
console.log('Registeration failed')
}
});

app.post('/submit-login', (req, res) => {
const user = model.findOne({
'login': req.body.login,
'password': req.body.password,
});
if (!user) {
console.log('Login failed');
} else {
console.log('Successfully logged in')
}
});

这是模型代码:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

let schema = new Schema({
'login': String,
'password': String,
'gender': String,
'birthday': String
});

module.exports = mongoose.model('allInfo', schema);

如果密码或登录名不同,我希望它打印“登录失败”,如果密码和登录名相同,则打印“成功登录”。

最佳答案

您需要查看 docs

您应该将条件移动到回调中,如下所示:

const user = model.findOne({
'login': req.body.login,
'password': req.body.password,
}, function (err, user) {
if (!user) {
console.log('Login failed');
} else {
console.log('Successfully logged in')
}
}));

更新

还有一件事要注意,来自mongoose.model文档

The first argument is the singular name of the collection your model is for. Mongoose automatically looks for the plural, lowercased version of your model name.

这意味着在你的代码中,模型将寻找一个名为 allinfos 的集合,如果你在数据库中的表名为 users 那么你应该更改这一行

module.exports = mongoose.model('allInfo', schema);

对此:

module.exports = mongoose.model('User', schema); // This will look-up the collection users

关于javascript - 如何在 Mongoose 中使用 findOne(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58806576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com