#mongodb #mongoose #mern
Вопрос:
Зашел в тупик, и это должно быть что-то предельно простое.
У меня есть приложение стека MERN, которое не находит данные от mongo, как ожидалось.
С внешнего интерфейса я публикую и обновляю документ. Я вхожу в интерфейс командной строки Mongo и вижу сохраненные данные.
Но в приложении Node Мангуст не возвращает полный документ.
Вот мой маршрут, чтобы получить документ-я даже пытаюсь протестировать получение всего.
router.get("/", async (req, res) => {
const user_email = req.query.user_email;
const course_id = req.query.course_id;
const test = await CourseProgressSchema.find({
_id: "60acfd1c969cac0bd3a213a8",
});
console.log(test);
try {
let course_progress;
if (user_email amp;amp; course_id) {
course_progress = await CourseProgressSchema.findOne({
user_email,
course_id,
});
if (!course_progress) {
const newCourseProgress = new CourseProgressSchema({
user_email,
course_id,
});
course_progress = await newCourseProgress.save();
}
} else if (user_email amp;amp; !course_id) {
course_progress = await CourseProgressSchema.find({ user_email });
} else if (course_id amp;amp; !user_email)
course_progress = await CourseProgressSchema.find({ course_id });
else {
res.json({ error: "Not Found." });
}
console.log(course_progress);
res.json({ success: course_progress });
} catch (error) {
console.log(error);
res.json({
error: "Soemthing went wrong when getting current course progress.",
});
}
});
course_progress утешается/возвращается как:
[0] [
[0] {
[0] _id: 60acfd1c969cac0bd3a213a8,
[0] user_email: 'nickisyourfan@icloud.com',
[0] course_id: '60acfcfe969cac0bd3a213a7',
[0] __v: 0
[0] }
[0] ]
Но если я открою интерфейс командной строки mongo и использую db.courseprogressscchemas.find().pretty()
его, он вернет обновленный документ:
{
"_id" : ObjectId("60acfd1c969cac0bd3a213a8"),
"user_email" : "nickisyourfan@icloud.com",
"course_id" : "60acfcfe969cac0bd3a213a7",
"__v" : 0,
"course_progress" : {
"60acfca1969cac0bd3a213a5" : {
}
}
}
Вот моя схема — ничего особенного:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const CourseProgressSchema = new Schema({
user_email: {
type: String,
required: true,
},
course_progress: {
type: Object,
required: true,
default: {},
},
course_id: {
type: String,
required: true,
},
});
module.exports = CourseProgress = mongoose.model(
"CourseProgressSchema",
CourseProgressSchema
);
Может ли кто-нибудь помочь мне понять, почему мангуст возвращает только часть документа, а не все целиком?
Ответ №1:
Мангуст по умолчанию не показывает пустые объекты. Чтобы получить их, вы должны установить minimize
флажок false
при создании схемы.
const CourseProgressSchema = new Schema(
{
user_email: {
type: String,
required: true,
},
course_progress: {
type: Object,
required: true,
default: {},
},
course_id: {
type: String,
required: true,
},
},
{ minimize: false }
);
Комментарии:
1. Сделаю — я уверен, что это была моя проблема, большое спасибо!