Что ж, вы должны сначала определить схему.
//this is ../models/user.model file
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
//Define user model schema
const userSchema = new Schema({
_id: String,
attending: { type: Number, required: true },
dietaryRequirements: String,
}, {
timestamps: true
});
const User= mongoose.model('users', userSchema );
module.exports = User;
Затем вы получаете пользователя как объект, поэтому вам нужно вставить данные в массив как объекты. Схеме, которую вы определили. когда вы добавляете пользовательские объекты в массив, вы можете легко вызывать метод mon goose insertMany()
, полученный из пользовательской схемы.
const User= require('../models/user.model');
const { user } = req.body;
console.log(user );
let userItems= Object.keys(user).map(userItem => {
return {
_id: userItem,
attending: user[userItem ].attending,
dietaryRequirements: user[userItem ].dietaryRequirements,
}
});
try {
await User.insertMany(userItems);
res.status(200).json({ status: true });
} catch (error) {
console.log(error);
}
этот User.insertMany(userItems)
метод 'await', пока все данные не сохранятся в mon go db, следовательно, вы должны использовать ключевое слово 'asyn c' в express router.
Подробнее здесь
обновить несколько случайных пользователей
Здесь вы можете использовать асинхронный l oop, тогда код будет быстрым.
let updateResponces = await Promise.all(userItems.map(user=>{
User.updateOne({ _id: user._id }, { attending: 'true'});
});