Как сохранить определенные элементы для указанных c пользователей в mongodb? - PullRequest
0 голосов
/ 14 января 2020

Я работаю над приложением для отслеживания заданий.

Пользователь создает учетную запись, сохраняя пользователя в коллекции mongodb.

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true
  },
  password: {
    type: String,
    required: true
  },
  date: {
    type: Date,
    default: Date.now
  }
});
const JobSchema = new mongoose.Schema({
  position: {
    type: String,
    required: true
  },
  company: {
    type: String,
    required: true
  },
  status: {
    type: String,
    default: "applied"
  },
  date: {
    type: Date,
    default: Date.now
  }
});

Когда пользователь добавляет задание как бы вы сохранили (.post) и извлекли (.get) эти данные, соответствующие этому конкретному c пользователю?

Есть ли способ сохранить "_id" пользователей для добавленных заданий, и searchById, чтобы получить работу?

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Например,


const UserSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    }
});

const User = mongoose.model('User', UserSchema);

async function updateUser() {
    let user = await User.findOne({"name": "a-unique-user-name-in-the-db"})

    let userId = user._id

    let newEmail = "asdf@asdf.com"

    let updated = await User.updateOne(
        { "_id": userId },
        {
            $set: {
                "email": newEmail,
            }
        }
    )

    if (updated) {
        console.log("updated")
    }
}

updateUser();
0 голосов
/ 14 января 2020

Это зависит от того, чего именно вы хотите достичь, и от того, какие отношения будут иметь ваши модели. Допустим, у ваших пользователей будет несколько заданий, лучше всего будет хранить массив ObjectId s. Опция ref сообщает mon goose, какие коллекции нужно искать при заполнении массива

const UserSchema = new mongoose.Schema({
     name: {
     type: String,
     required: true
    },
    email: {
     type: String,
     required: true
    },
    password: {
     type: String,
     required: true
    },
    date: {
     type: Date,
     default: Date.now
    },
    jobs: [{type:Schema.Types.ObjecId,ref: 'Job'}]
 });

, а затем при запросе к базе данных вы связываете populate('jobs') после запроса. Вы можете прочитать больше по теме здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...