在猫鼬模式中嵌套对象数组
Nesting array of objects in mongoose Schema
我正在创建一个学生数据模式,其中一个学生包含每个学期的分数。我想创建一个 sem 数组,其中 Sem_Schema 必须是 ref 对象。通过使用 Sem_Schema 我想创建 Sem_Schema 对象的 sem 数组。请帮忙。
var Student_Data_Schema = new mongoose.Schema({
name:{type:String,default:"Rahul Kandiboina", required: true},
reg_no:{type:String,default:"315175711057", required: true},
dob:{type:String,default:"july 3 1998"},
BG:{type:String,default:"o +ve", required: true},
ctg:{type:String,default:"B", required: true},
caste:{type:String,default:"BC", required: true},
EAMCET_Rank:{type:String,default:"29000", required: true},
ECET_Rank:{type:String,default:"123", required: true},
SSC_M:{type:String,default:"9.3", required: true},
Inter_M:{type:String,default:"960", required: true},
DEP_M:{type:String,default:"870", required: true},
BTECH_AGG:{type:String,default:"7.5", required: true},
GRE:{type:String,default:"60", required: true},
GATE:{type:String,default:"120", required: true},
CAT:{type:String,default:"10000", required: true},
TOEFL:{type:String,default:"100", required: true},
E_MAIL:{type:String,default:"rahulkandiboina9@gmail.com", required:
true},
// Father :{},
// Mother :{},
// Bro :{},
// Sis :{},
Pre_Add :{
D_no:{type:String},
Street:{type:String},
village:{type:String},
town:{type:String},
District:{type:String},
State:{type:String},
Pin:{type:String}
},
Per_Add:{
D_no:{type:String},
Street:{type:String},
village:{type:String},
town:{type:String},
District:{type:String},
State:{type:String},
Pin:{type:String}
},
Marks:{
CGPA:{type:Number},
B_LOGS:{type:Number},
Sem :[Sem_Schema]
}
})
var Sem_Schema = new mongoose.Schema({
SGPA :{type:String},
CGPA :{type:String},
B_Logs :{type:String},
Sem_Att :{type:String},
T_Sess :{type:String}
})
我想将 Sem_Schema 嵌套到 Sem 数组中,但错误如下
F:\Project\WEB\NewPro\NodeJs\node_modules\mongoose\lib\schema.js:398
throw new TypeError('Invalid value for schema Array path ' + prefix +
key + '
'); ^
TypeError: Invalid value for schema Array path Marks.Sem
at
Schema.add
(F:\Project\WEB\NewPro\NodeJs\node_modules\mongoose\lib\schema.js:398:13)
at Schema.add
(F:\Project\WEB\NewPro\NodeJs\node_modules\mongoose\lib\schema.js:407:14)
at new Schema
(F:\Project\WEB\NewPro\NodeJs\node_modules\mongoose\lib\schema.js:114:10)
at Object.
(F:\Project\WEB\NewPro\NodeJs\Models\dept.js:3:27) at Module._compile
(internal/modules/cjs/loader.js:688:30) at
Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32) at
tryModuleLoad (internal/modules/cjs/loader.js:537:12) at
Function.Module._load (internal/modules/cjs/loader.js:529:3) at
Module.require (internal/modules/cjs/loader.js:636:17) at require
(internal/modules/cjs/helpers.js:20:18) at Object.
(F:\Project\WEB\NewPro\NodeJs\Router\college.js:3:14) at
Module._compile (internal/modules/cjs/loader.js:688:30) at
Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32) at
tryModuleLoad (internal/modules/cjs/loader.js:537:12)
像这样在 Student_Data_Schema 之前声明您的 Sem_Schema。这里发生的是当你在你的模式之后引用它时它不知道这是什么 Sem_schema 是什么导致了这个。所以将代码更改为,
var Sem_Schema = new mongoose.Schema({
SGPA :{type:String},
CGPA :{type:String},
B_Logs :{type:String},
Sem_Att :{type:String},
T_Sess :{type:String}
})
// after this add the next schema
var Student_Data_Schema = new mongoose.Schema({
name:{type:String,default:"Rahul Kandiboina", required: true},
reg_no:{type:String,default:"315175711057", required: true},
dob:{type:String,default:"july 3 1998"},
BG:{type:String,default:"o +ve", required: true},
ctg:{type:String,default:"B", required: true},
caste:{type:String,default:"BC", required: true},
EAMCET_Rank:{type:String,default:"29000", required: true},
ECET_Rank:{type:String,default:"123", required: true},
SSC_M:{type:String,default:"9.3", required: true},
Inter_M:{type:String,default:"960", required: true},
DEP_M:{type:String,default:"870", required: true},
BTECH_AGG:{type:String,default:"7.5", required: true},
GRE:{type:String,default:"60", required: true},
GATE:{type:String,default:"120", required: true},
CAT:{type:String,default:"10000", required: true},
TOEFL:{type:String,default:"100", required: true},
E_MAIL:{type:String,default:"rahulkandiboina9@gmail.com", required:
true},
// Father :{},
// Mother :{},
// Bro :{},
// Sis :{},
Pre_Add :{
D_no:{type:String},
Street:{type:String},
village:{type:String},
town:{type:String},
District:{type:String},
State:{type:String},
Pin:{type:String}
},
Per_Add:{
D_no:{type:String},
Street:{type:String},
village:{type:String},
town:{type:String},
District:{type:String},
State:{type:String},
Pin:{type:String}
},
Marks:{
CGPA:{type:Number},
B_LOGS:{type:Number},
Sem :[Sem_Schema]
}
})
我正在创建一个学生数据模式,其中一个学生包含每个学期的分数。我想创建一个 sem 数组,其中 Sem_Schema 必须是 ref 对象。通过使用 Sem_Schema 我想创建 Sem_Schema 对象的 sem 数组。请帮忙。
var Student_Data_Schema = new mongoose.Schema({
name:{type:String,default:"Rahul Kandiboina", required: true},
reg_no:{type:String,default:"315175711057", required: true},
dob:{type:String,default:"july 3 1998"},
BG:{type:String,default:"o +ve", required: true},
ctg:{type:String,default:"B", required: true},
caste:{type:String,default:"BC", required: true},
EAMCET_Rank:{type:String,default:"29000", required: true},
ECET_Rank:{type:String,default:"123", required: true},
SSC_M:{type:String,default:"9.3", required: true},
Inter_M:{type:String,default:"960", required: true},
DEP_M:{type:String,default:"870", required: true},
BTECH_AGG:{type:String,default:"7.5", required: true},
GRE:{type:String,default:"60", required: true},
GATE:{type:String,default:"120", required: true},
CAT:{type:String,default:"10000", required: true},
TOEFL:{type:String,default:"100", required: true},
E_MAIL:{type:String,default:"rahulkandiboina9@gmail.com", required:
true},
// Father :{},
// Mother :{},
// Bro :{},
// Sis :{},
Pre_Add :{
D_no:{type:String},
Street:{type:String},
village:{type:String},
town:{type:String},
District:{type:String},
State:{type:String},
Pin:{type:String}
},
Per_Add:{
D_no:{type:String},
Street:{type:String},
village:{type:String},
town:{type:String},
District:{type:String},
State:{type:String},
Pin:{type:String}
},
Marks:{
CGPA:{type:Number},
B_LOGS:{type:Number},
Sem :[Sem_Schema]
}
})
var Sem_Schema = new mongoose.Schema({
SGPA :{type:String},
CGPA :{type:String},
B_Logs :{type:String},
Sem_Att :{type:String},
T_Sess :{type:String}
})
我想将 Sem_Schema 嵌套到 Sem 数组中,但错误如下
F:\Project\WEB\NewPro\NodeJs\node_modules\mongoose\lib\schema.js:398
throw new TypeError('Invalid value for schema Array path' + prefix + key + '
'); ^TypeError: Invalid value for schema Array path
Marks.Sem
at Schema.add (F:\Project\WEB\NewPro\NodeJs\node_modules\mongoose\lib\schema.js:398:13) at Schema.add (F:\Project\WEB\NewPro\NodeJs\node_modules\mongoose\lib\schema.js:407:14) at new Schema (F:\Project\WEB\NewPro\NodeJs\node_modules\mongoose\lib\schema.js:114:10) at Object. (F:\Project\WEB\NewPro\NodeJs\Models\dept.js:3:27) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Module.require (internal/modules/cjs/loader.js:636:17) at require (internal/modules/cjs/helpers.js:20:18) at Object. (F:\Project\WEB\NewPro\NodeJs\Router\college.js:3:14) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
像这样在 Student_Data_Schema 之前声明您的 Sem_Schema。这里发生的是当你在你的模式之后引用它时它不知道这是什么 Sem_schema 是什么导致了这个。所以将代码更改为,
var Sem_Schema = new mongoose.Schema({
SGPA :{type:String},
CGPA :{type:String},
B_Logs :{type:String},
Sem_Att :{type:String},
T_Sess :{type:String}
})
// after this add the next schema
var Student_Data_Schema = new mongoose.Schema({
name:{type:String,default:"Rahul Kandiboina", required: true},
reg_no:{type:String,default:"315175711057", required: true},
dob:{type:String,default:"july 3 1998"},
BG:{type:String,default:"o +ve", required: true},
ctg:{type:String,default:"B", required: true},
caste:{type:String,default:"BC", required: true},
EAMCET_Rank:{type:String,default:"29000", required: true},
ECET_Rank:{type:String,default:"123", required: true},
SSC_M:{type:String,default:"9.3", required: true},
Inter_M:{type:String,default:"960", required: true},
DEP_M:{type:String,default:"870", required: true},
BTECH_AGG:{type:String,default:"7.5", required: true},
GRE:{type:String,default:"60", required: true},
GATE:{type:String,default:"120", required: true},
CAT:{type:String,default:"10000", required: true},
TOEFL:{type:String,default:"100", required: true},
E_MAIL:{type:String,default:"rahulkandiboina9@gmail.com", required:
true},
// Father :{},
// Mother :{},
// Bro :{},
// Sis :{},
Pre_Add :{
D_no:{type:String},
Street:{type:String},
village:{type:String},
town:{type:String},
District:{type:String},
State:{type:String},
Pin:{type:String}
},
Per_Add:{
D_no:{type:String},
Street:{type:String},
village:{type:String},
town:{type:String},
District:{type:String},
State:{type:String},
Pin:{type:String}
},
Marks:{
CGPA:{type:Number},
B_LOGS:{type:Number},
Sem :[Sem_Schema]
}
})