【发布时间】:2019-11-12 09:28:16
【问题描述】:
我有 node.js 代码,我使用猫鼬。我没有收到任何错误,只是Successfuly logged in。
我这几天正在尝试解决这个问题,我尝试了很多东西,但都没有奏效。
这是服务器代码:
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);
如果密码或登录名不同,我希望它打印“登录失败”,如果密码和登录名相同,则打印“成功登录”。
【问题讨论】:
-
因为你的 if 语句总是真实的
if (!user)。用户为真,因为具有键值对的对象是真实的 e.i. : 它将解析为真。即使是空的对象也是真实的:let user = {}; console.log(!!user); -
@Michelangelo 没有匹配项时,mongoose.findOne 将返回
null,因此 if 条件并不总是真实的。
标签: javascript node.js mongoose