首页 > 解决方案 > 从模型模式获取对象数据数组到节点应用程序

问题描述

我想获取存储为对象数组(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);
})


标签: node.jsangularmongodbexpress

解决方案


推荐阅读