Вставить в объект поле с массивом ids - PullRequest
0 голосов
/ 05 мая 2020

У меня есть имя объекта, я хочу, чтобы оно было таким:

// such data comes from the front: namefield ("кот") and ID ("5e7f164771c90130441c0102")
"firstname":{
  "кот":["5e7f164771c90130441c0102"], 
  "tata": ["24tafwef42f42f4242f24f","fwf4f43qf24qf4q2f42"]
}

Мне нужно вставить поле в объект и назначить массив с идентификатором.

Если такое поле уже есть, вставьте ID в массив.

Если такой ID уже есть, то в массиве делать нечего.

Если в массивах есть идентификатор, удалите его из массива и вставьте в другой массив, где поле имени спереди, чтобы вставить его.

enter image description here

немного поработал, думаю, стоит использовать bulkWrite или findOneAndUpdate, но не могу понять, как сделать необходимые действия:

router.post('/bio/firstname', (req, res) => {

  Habalka.find({
    _id: 'd9aa8566-75fe-4108-a72e-1b67e79cf40c'
  })
    .then(habalka => {
      console.log(habalka[0].bio.firstname) // { 'кот': [ 5e7f164771c90130441c0102 ] }

    });
});

модель

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const HabalkaSchema = new Schema({
  _id: {
    type: String
  },
  bio: {
    firstname: {},
    lastname: {},
    middlename: {},
    company: {}
  },
  rating: [

  ],
  files: [
    {
      _id: {
        type: String
      },
      destination: {
        type: String
      },
      filename: {
        type: String
      },
      path: {
        type: String
      },
      folder: {
        type: String
      },
      info: {
        size: {
          type: Number
        },
        mimetype: {
          type: String
        },
        encoding: {
          type: String
        },
        originalname: {
          type: String
        },
        fieldname: {
          type: String
        },
      },
      date: {
        type: Date,
        default: Date.now
      },
      bio: {
        type: Object
      },
      userId: String,
      guessId: {},
    }
  ],
  date: {
    type: Date,
    default: Date.now
  }
});
module.exports = Habalka = mongoose.model('habalka', HabalkaSchema);
...