MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Obteve dados duplicados ao se inscrever várias vezes


O problema é que você está usando um id aleatório toda vez na chamada para added para que o cliente sempre pense que todos os documentos são únicos. Você precisa criar um consistente gerador de string de identificação. Usando uma resposta para esta pergunta , você pode imaginar construir um conjunto de funções como estas:
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)));
};

Então, se você quiser um documento exclusivo para cada combinação de code e hour você poderia fazer isso:
var id = objectToHash(r._id);
this.added('totalNumber', id, {...});