2016-12-28 6 views
0

Мне было интересно, есть ли способ проверить повторяющиеся значения перед вводом их в базу данных с использованием mongodb и mongoose. Я в основном ищу способ подтверждения данных в том смысле, что данные не повторяются, поэтому я не теряю места. Я надеялся, что кто-то может указать мне в правильном направлении или показать мне решение, спасибо.Как использовать mongoose или mongodb для проверки повторяющихся данных (Node.js + Express)

App.js:

var print = require('./print'); 
var express = require("express"); 
var app = express(); 

var bodyParser = require('body-parser'); 
var mongodb = require('mongodb'); 
var MongoClient = mongodb.MongoClient; 
var config = require('./config.js'); 

app.use(bodyParser.urlencoded({ extended: true })); 
app.set('view engine', 'ejs'); 
app.get('/', function(req, res) { 
    res.render("post"); 
    print("All is in order"); 
}) 

app.listen(config.port, function() { 
    print(`listening on ${config.port}`); 
}) 

MongoClient.connect(config.localUrl, function(err, db) { 
    if(err) { 
     console.log('Unable to connect to the mongoDB server. Error:', err); 
     return; 
    } 
    var collection = db.collection('users'); 
    app.post('/post', function(req, res) { 

     var name = req.body.name 
     var email = req.body.email 
     res.send(`You sent the name ${name} and the email ${email}`); 
     var user1 = {}; 
     user1.name = name; 
     user1.email = email; 
     //validate no repeated values 
     collection.insert(user1, function(err,result){ 
     if (err) { 
      console.log(err); 
     } else { 
      console.log('The Results', result); 
      db.close(); 
     } 
     }) 
    }) 

    }) 

ответ

0

вы можете использовать $ setOnInsert https://docs.mongodb.com/manual/reference/operator/update/setOnInsert/#op._S_setOnInsert с upsert: верно.

+0

Как это сделать, единственные примеры используют функцию обновления (извините, это может быть глупый вопрос, но я новичок в mongodb). –

+0

Вы также можете сделать запрос от объявления узла, если запрос возвращает null, это означает, что у вас нет сохраненного документа. Теперь вы можете вставить новый документ. –