首页 文章

Mongoose insert很多可能在populate上查找

提问于
浏览
0

我有一个MEAN应用程序,我允许用户上传包含多个Event行的CSV . 赞美CSV后我有一个Event对象列表,我可以使用mongoose insertMany插入记录 . 我有一个像这样的事件和参与者模式(针对此问题进行了简化) .

var EventSchema = new mongoose.Schema({
    name: String,
    date: Date,
    location: String,
    speaker: { type: ObjectId, ref: 'Attendee' },
});

var AttendeeSchema = new mongoose.Schema({
    firstname: String,
    email: {type: String, unique : true},
    speaker: Boolean,
});

我的问题是,当用户上传CSV时,他们只知道发言人的电子邮件地址,而不知道ObjectId . 此电子邮件始终是唯一的 . 在执行Event.insertMany()时,有一种方法可以在电子邮件上执行Attendee.findOne,并在插入每个事件时使用ObjectId ref将参与者填充到参与者 .

1 回答

  • 0

    我认为你必须按顺序进行:

    let email; //you know this email
    let events;// prepared events data but without speaker id
    
    Attendee.findOne({email: email}).then(result=>{
        events.forEach(event=>event.speaker = result._id);
        return events:
    })
    .then(events=>{
        return Event.insertMany(events);
    })
    .then(results=>{
        /*something results handle*/
    })
    .catch(err=>{
        throw err;
    })
    

相关问题