Обновите массив с новыми ObjectID и $ currentDate - PullRequest
0 голосов
/ 28 июня 2018

У меня есть массив в моей базе данных Монго с моими пользователями. При регистрации я добавляю нового пользователя (объект) в этот массив пользователей. В то же время я хочу создать ObjectID для этого нового пользователя и создать атрибут created_at с датой его создания

let NewUserStructure = {
    _id: ObjectID(),
    username: NewUserUsername,
    nome: NewUserName,
    password: password,
    logado: false,
    especialidades: EspecialidadesArray,
    adm: isadmin,
    cuidade: [],
    $currentDate: {criadoem: true},
    criadopor: createdby,
};
// let query = {_id: '5b193acdfb6fc05a6fe42785'};
let query = {Profissionais: {$exists: true}};
let NewValue = {$addToSet: {Profissionais: NewUserStructure}};
nosqlquery.update('usuarios', query, NewValue, function(result) {
    res.status(200).send(result);
});

Я создал универсальную функцию для метода обновления в другом файле

const update = function(targetcollection, query, NewValues, callback) {
console.log('update was called');
_db.collection(targetcollection).updateOne(query, NewValues, function(err, result) {
    if (err) throw err;
    callback(result);
});

};

NewUserStructure - это json, который я вставляю в массив Profissionais, используя $addToSet. Я пытался создать этот уникальный ObjectID и новый атрибут с помощью currentDate разными способами.

Ошибка: $currentDate is not valid for storage.

Мне кажется, что создание поля _id с ObjectID() не создаст уникальный _id для пользователя, есть ли другой подход для этого?

1 Ответ

0 голосов
/ 28 июня 2018

Вы не можете использовать оператор $currentDate внутри $addToSet, поэтому просто используйте вместо него new Date(), аналогично тому, что вы делаете с вызовом ObjectID() (что нормально):

let NewUserStructure = {
    _id: ObjectID(),
    username: NewUserUsername,
    nome: NewUserName,
    password: password,
    logado: false,
    especialidades: EspecialidadesArray,
    adm: isadmin,
    cuidade: [],
    criadoem: new Date(),
    criadopor: createdby,
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...