나는 다음과 같은 스키마가 : 나는 쿼리 할 때는 조건부로 몽고 쿼리 경로를 채우는
const connectionSchema = new Schema({
...
event: {
type: Schema.ObjectId,
ref: 'events'
},
place: {
type: Schema.ObjectId,
ref: 'places'
},
})
const eventsSchema = new Schema({
...
place: {
type: Schema.ObjectId,
ref: 'places'
},
})
어느 하나의 connection
또는 connection
s의 수집, 나는 event
가 지정된 경우 그것을 확인하고 싶은 경우를 따라서 event
에서 place
을 반품하고, 그렇지 않은 경우 에서 place
을 반환하십시오.
: 나는 대체 수행 할 execFunction
에 전체 컬렉션을 반복하는 것을 피하기 위해 노력하고있어,
let c
const execFunction = (err, connection) => {
if (connection.event) {
connection.place = connection.event.place
}
c = connection
}
const connectionPromise = Connection.findById(connectionId)
connectionPromise.populate({ path: 'event', populate: { path: 'place' } })
connectionPromise.populate('place')
connectionPromise.exec(execFunction)
을하지만, 대신 컬렉션을 쿼리하면 각 개별 결과에 대한 논리가됩니다.
더 좋은 (즉 더 뛰어난) 방법이 있습니까?
엄밀히 말하면, 그것은 .exec() 또는 .then()입니다. 그때까지,'connectionPromise'는 실제로 쿼리입니다! #namingthings – joeytwiddle
@joeytwiddle 아 네, 지적 해 주셔서 고마워요. –