【发布时间】:2017-10-06 01:19:59
【问题描述】:
我有一个 MEAN 应用程序,我允许用户上传包含多个事件行的 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 引用填充扬声器字段。
【问题讨论】:
-
你好。为什么不按顺序做,先准备 Attendee 对象,再做 Event.insertMany()?
-
我不是 mongoose(mongo) 的专家,这不是直接的答案,但您可以通过首先查询 AttendeeSchema 以获取扬声器然后在插入中使用它来实现。
标签: javascript node.js mongodb mongoose mean-stack