Mongodb предотвращает дублирование ввода значений - PullRequest
0 голосов
/ 09 мая 2018

Я создаю базовый веб-сайт, который извлекает информацию о пользователях и публикует ее в базе данных. У меня проблемы с достижением, это предотвращение регистрации пользователей, если они уже регистрировались ранее.

Я пробовал createIndex(unique:true) find ensureIndex(unique:true) методов, но безуспешно. Может я перепутал синтаксис? Я либо получаю Promise { <pending> } в качестве возвращаемого значения, либо весь документ со множеством несвязанной информации.

МОЙ .JS ФАЙЛ

var express = require('express');
var router = express.Router();
var mongo = require('mongodb').MongoClient;
var request = require('request');
var bodyParser = require('body-parser');
var url = 'mongodb://localhost/ibs';
var async = require('async');
var session = require('express-session');
var code = require('./verificationCode');


router.get('/', function (req, res, next) {



    router.post('/form', function (req, res) {

        var name = req.body.name;
        var surname = req.body.surname;
        var phone = req.body.phone;
        var email = req.body.email;
        // var address = req.body.adress;
        var verCode = code.code();
        mongo.connect(url, function (err, db) {

            person = {
                Name: req.body.name,
                Surname: surname,
                Phone: phone,
                Email: email,
                // Adress: address,
                verCode: verCode
            }


            db.collection('user').insert(person);



            res.redirect('/congratulations');
        });
    });

    res.render('information');


});

module.exports = router;

1 Ответ

0 голосов
/ 09 мая 2018

Метод, который я использую, является простым оператором if (), чтобы проверить, вставлен ли уже кто-то с таким именем / именем пользователя

(async function addUser() {      
  let client;
       try {
           client = await MongoClient.connect(url);

           const db = client.db(dbName);
           const col = db.collection('users');
           const userFromDB = await col.findOne({ //the user you will be inserting});
           if (userFromDB) {
              // dont insert user
           } else {
              // insert user
           }
       } catch (err) {
            console.log(err)
       }
}());

Если userFromDB имеет значение true, то если он найден, и вы не хотите его вставлять. Если это ложь, то вы хотите вставить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...