Как использовать найти в мангусте - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть код, он должен создать mongoose.schema, сохранить его, найти и проверить, совпадает ли он с вводом. Итак, я знаю, что у меня есть ошибка, но она не регистрируется в консоли, поэтому я не знаю, в чем проблема.

Это сервер express node.js, использующий mongoose и js

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', (req, res) => {
  res.redirect('/login')
  let user = new model({
    all:{
    'login': req.body.login,
    'password': req.body.password,
    'gender': req.body.gender,
    'birthday': req.body.birthday
  }});
  user.save()
  console.log('Successfuly Updated the data')
});

app.post('/submit-login', (req, res) => {
  model.find({
  'all.login': req.body.login, 
  'all.password': req.body.password}, function (err, user){
    if(err){
      console.log(err)
    }
    if(!user){
      console.log('No such user')
    }
    console.log('Successfully logged in')
  });
});
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

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

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

Я ожидал, что в журнале появится сообщение об ошибке, если оно неверно, или в журнале «Успешно вошел в систему», но при этом не будет регистрироваться ошибка.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Я предлагаю вам дважды проверить следующие строки кода:

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

Двоеточие для разделения порта прослушивания должно идти сразу после 'localhost' ...

0 голосов
/ 10 ноября 2019

Вы можете сделать это следующим образом

const existingUser = await model.findOne({all.login:req.body.login}) //use async in function definition

, а затем проверить, является ли existingUser неопределенным или нулевым с операторами if.

Если пользователь не найден return req.next()

Если найден, нам нужно проверить пароль,

if(req.body.password === existingUser.password){
 //return successful
}
...