node.js - 从模型模式获取对象数据数组到节点应用程序
问题描述
我想获取存储为对象数组(template_A)的数据并在节点应用程序中以数组格式显示,但我无法得到结果,我正在获取空数组。我最大的问题是我不知道如何获取存储为 aray 的数据。在这种情况下,我需要通过 Mongo 进行(创建 json 并通过路由获取它)。
我怎样才能以编程方式做到这一点?提前致谢。
{
"_id": {
"$oid": "611f354944c4571778df456c"
},
"assignmentId": "61235a452a8a2428a43514ed",
"studentId": "60dafc5c0254f7122e9fe7f0",
"assignmentOf": "subject",
"createdAt": {
"$date": "2021-08-20T04:53:29.717Z"
},
"updateAt": {
"$date": "2021-08-20T04:53:29.717Z"
},
"__v": 0,
"grade": "b ",
"remark": "good",
"template": "template_A",
"template_A": {
"col_1": "col_1",
"col_2": "col_2"
},
"template_B": {
"col_1": "col_1",
"col_2": "col_2"
}
}
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var stdSubAssignmentsSchema =new Schema({
assignmentId :
{type:String,
default:"",
required:true,ref:'SubjectAssignments'},
studentId:
{type:String,
default:"",
required:true, ref: 'User'},
assignmentOf:{
type:String,
default:"",
required:true
},
createdAt:
{type:Date,
default:Date.now},
updateAt:
{type:Date,
default:Date.now},
grade:
{type:String,
default:"",
required:true},
remark:
{type:String,
default:"",
required:true},
template:{
type:String,
default:"",
required:true
},
template_A:[
{
col_1 : String,
col_2: String
}
],
template_B: [{
col_1 : String,
col_2: String
}]
})
mongoose.model('StdSubAssignments',stdSubAssignmentsSchema);
router.get('/getStudentAssignment',(req,res)=>{
console.log("--1---------GetStudentAss-----");
console.log("req student======================",req.query)
var assignments = [];
StdSubAssignmentsModel.find({
studentId:req.query.userId
}).then(function(stdAssignment){
stdAssignment.forEach(assignment=>{
var assignment_obj = { }
var studentUploads = [];
stdAssignmentUploadModel.find({
assignId : assignment._id
}).then(function(assignmentUploads){
if(assignment.assignmentOf == 'cohort'){
cohortAssignmentModel.findOne({
_id:assignment.assignmentId
}).then(function(cohortAssignment){
assignment_obj.fileLink =`${filelink}api/assignments/download?
document_id=${cohortAssignment.doc_id}`;
assignment_obj.fileName = cohortAssignment.fileName;
assignment_obj.assignmentName = cohortAssignment.assignmentName;
assignment_obj.assignmentCreated = cohortAssignment.createdAt;
assignment_obj.assignmnentDraft = cohortAssignment.draftDate;
assignment_obj.assignmentSubmission = cohortAssignment.submissionDate;
assignment_obj.resubmissionDate = cohortAssignment.resubmissionDate;
assignment_obj.assignmentDescription = cohortAssignment.description;
assignment_obj.assignmentFileType = cohortAssignment.fileType;
assignment_obj.subject = cohortAssignment.subject;
assignment_obj.typeOfAssignment = cohortAssignment.typeOfAssignment;
assignment_obj.assignmentId = cohortAssignment._id;
assignment_obj.assignId = assignment._id;
assignment_obj.doc_id = cohortAssignment.doc_id;
assignment_obj.grade=assignment.grade;
assignment_obj.template=assignment.template;
assignment_obj.template_A=assignment.template_A;
assignmentUploads.forEach(uploadAssign=>{
studentUploads.push({
fileLink: `${filelink}api/assignments/download?
document_id=${uploadAssign.doc_id}`,
fileName:uploadAssign.fileName,
doc_id:uploadAssign.doc_id,
feedback:uploadAssign.feedback
})
});
assignment_obj.studentUploads = studentUploads;
console.log("assignment_obj == " + JSON.stringify(assignment_obj));
})
}else if(assignment.assignmentOf == 'subject'){
//check in subjectassignment table
SubjectAssignmentseModel.findOne({
_id:assignment.assignmentId
}).then(function(subAssignment){
assignment_obj.fileLink =`${filelink}api/assignments/download?document_id=${subAssignment.doc_id}`;
assignment_obj.fileName = subAssignment.fileName;
assignment_obj.assignmentName = subAssignment.assignmentName;
assignment_obj.assignmentCreated = subAssignment.createdAt;
assignment_obj.assignmnentDraft = subAssignment.draftDate;
assignment_obj.assignmentSubmission = subAssignment.submissionDate;
assignment_obj.resubmissionDate = subAssignment.resubmissionDate;
assignment_obj.assignmentDescription = subAssignment.description;
assignment_obj.assignmentFileType = subAssignment.fileType;
assignment_obj.subject = subAssignment.subject;
assignment_obj.typeOfAssignment = subAssignment.typeOfAssignment;
assignment_obj.assignmentId = subAssignment._id;
assignment_obj.assignId = assignment._id;
assignment_obj.doc_id = subAssignment.doc_id;
assignment_obj.grade=assignment.grade;
assignment_obj.template=assignment.template;
// assignment_obj.grade=cohortAssignment.grade;
assignment_obj.template_A=assignment.template_A;
assignmentUploads.forEach(uploadAssign=>{
studentUploads.push({
fileLink: `${filelink}api/assignments/download?document_id=${uploadAssign.doc_id}`,
fileName:uploadAssign.fileName,
doc_id:uploadAssign.doc_id,
feedback:uploadAssign.feedback
})
});
console.log("studentUploads == " + JSON.stringify(studentUploads))
assignment_obj.studentUploads = studentUploads;
console.log("assignment_obj == " + JSON.stringify(assignment_obj));
})
}
assignments.push(assignment_obj)
})
})
})
setTimeout(()=>{
console.log("assignments == " + JSON.stringify(assignments));
res.json({
status:200,
data:assignments
})
},5000);
})
解决方案
推荐阅读
- php - 如何在具有不同属性值的页面上多次使用相同的简码
- mongodb - 戈朗。MongoDB bulkWrite() 更新文档切片
- django - Django TruncDay 最大分组限制
- python - TypeError:“int”对象不可下标 - 创建列表
- c# - 类型向量
在 MathNet 中添加列表,列表中的每个成员都更改值 - android - Android Volley - JsonArrayRequest 返回空对象
- python - 用beautifulsoup gettext 抓取多个东西以获取roop 代码
- eclipse - 如何在 Eclipse 的“远程系统”中为用户操作添加键绑定?
- javascript - Chrome.extensions :打开选项卡 > 执行脚本 > 关闭选项卡
- sql - 基于 MIN 标志聚合行