Наборы Python AFAIK реализованы с использованием хэш-таблицы . Порядок, в котором элементы отображаются, зависит от используемой функции хэша. В рамках одного и того же запуска программы хеш-функция, вероятно, не изменяется, поэтому вы получаете тот же порядок.
Но нет никаких гарантий того, что он всегда будет использовать одну и ту же функцию, и порядок будет изменяться во всех прогонах - или в рамках одного и того же запуска, если вы вставляете множество элементов, а хэш-таблица должна изменять размер.
Если ответ не может существовать без пользователя, прежде всего вы должны найти пользователя. Если его нет, выведите ошибку, если она существует, просто создайте ответ, а затем прикрепите его к найденному пользователю.
User.findOne({email: req.email}, (error, foundUser)=>{
if(error || foundUser === null){
return res.status(400).json({status: false, message: 'user not found, or whatever'})
}
RequestReply.create(newReply, (error, createdReply)=>{
if(error || createdReply === null){
return res.status(400).json({status: false, message: 'error getting data'})
}
// TODO Update user with the new reply
}
});
В любом случае, с Mongoose вы можете использовать обещания и избавляться от этих обратных вызовов, вложенных предложений, я думаю, что это чище.