sql >> Database >  >> NoSQL >> MongoDB

Kreeg dubbele gegevens wanneer u zich meerdere keren abonneert

Het probleem is dat je elke keer een willekeurige id gebruikt in de aanroep van added dus de klant denkt altijd dat alle documenten uniek zijn. Je moet een consistente . bedenken id-tekenreeksgenerator. Een antwoord gebruiken op deze vraag , kun je je voorstellen dat je een reeks functies als deze bouwt:

hashCode = function (s) {
  return s.split('').reduce(function (a, b) {
    a = ((a << 5) - a) + b.charCodeAt(0);return a & a;
  }, 0);
};

objectToHash = function (obj) {
  return String(hashCode(JSON.stringify(obj)));
};

Dus als u een uniek document wilt voor elke combinatie van code en hour je zou dit kunnen doen:

var id = objectToHash(r._id);
this.added('totalNumber', id, {...});



  1. Best practices voor NoSQL

  2. Een veld bijwerken met de vorige waarde in MongoDB/Mongoose

  3. De strijd om de NoSQL-databases - MongoDB en de NoSQL-functies van MSSQL vergelijken

  4. Mongoose/mongoDB-query voegt zich bij ... maar ik kom uit een sql-achtergrond