.populate가 Sails에서 작동하는 데 문제가 있습니다. 아래의 모델을 사용하고 .populateAll을 사용하면 연관성과 데이터가 생기지 만 두 개의 돛을 생성 할 수 있습니다. 나는 그 학교와 관련된 데이터베이스와 모든 리뷰로부터 학교 기록을 얻을 수 있기를 원합니다. 어떤 도움을 환상적 일 것 .populate("Reviews")
Sails.js 채우기 문제
에 대한 지침을 가입 구축하는 동안 발생했습니다 예기치 않은 오류 :
오류 : 나는) (.populate를 사용하는 경우, 나는 오류!
Schools.js 모델
module.exports = {
autoCreatedAt: false,
autoUpdatedAt: false,
tableName:'schools',
attributes: {
SID: {
type: 'integer',
autoIncrement: true,
primaryKey: true,
size: 15
},
schoolName: {
type: 'text',
},
schoolCity: {
type: 'text',
},
schoolCountry: {
type: 'text',
},
schoolRegion: {
type: 'text',
},
schoolWebsite: {
type: 'text',
},
schoolCountryCode: {
type: 'text',
},
schoolNumbStudents: {
type: 'integer',
},
schoolNumbFaculty: {
type: 'integer',
size: 4,
defaultsTo: '0'
},
schoolCurriculum: {
type: 'text',
},
schoolLanguage: {
type: 'text',
},
schoolLangInstruction: {
type: 'text',
},
schoolonetoone: {
type: 'text',
},
schoolAccred: {
type: 'text',
},
schoolRatio: {
type: 'string',
size: 3
},
schoolMission: {
type: 'text',
},
schoolFiveWords: {
type: 'text',
},
schoolInitiatives: {
type: 'text',
},
schoolSalaryMin: {
type: 'text',
},
schoolSalaryMax: {
type: 'text',
},
schoolSalaryBA: {
type: 'text',
},
schoolSalaryBAPlus: {
type: 'text',
},
schoolSalaryMA: {
type: 'text',
},
schoolSalaryMAPlus: {
type: 'text',
},
schoolHealth: {
type: 'text',
},
schoolAirfare: {
type: 'text',
},
schoolAirfareProv: {
type: 'text',
},
schoolHousing: {
type: 'text',
},
schoolDependent: {
type: 'text',
},
schoolShipping: {
type: 'text',
},
schoolRetirement: {
type: 'text',
},
schoolreviews: {
collection: 'Reviews',
via: 'schoolID',
dominant: true
}
}
};
Reviews.js 모델
module.exports = {
autoCreatedAt: false,
autoUpdatedAt: false,
tableName:'reviews',
attributes: {
RID: {
type: 'integer',
required: true,
autoIncrement: true,
primaryKey: true,
size: 15
},
schoolID: {
type: 'integer',
required: true,
size: 15,
model:'Schools'
},
profileID: {
type: 'integer',
required: true,
size: 15
},
active: {
type: 'integer',
required: true,
size: 1
},
dateCreated: {
type: 'date',
required: true,
defaultsTo: 'CURRENT_TIMESTAMP'
},
Q1: {
type: 'integer',
required: true,
size: 2
},
Q2: {
type: 'integer',
required: true,
size: 2
},
Q3: {
type: 'integer',
required: true,
size: 2
},
Q4: {
type: 'integer',
required: true,
size: 2
},
Q5: {
type: 'integer',
required: true,
size: 2
},
Q6: {
type: 'integer',
required: true,
size: 2
},
Q7: {
type: 'integer',
required: true,
size: 2
},
Q8: {
type: 'integer',
required: true,
size: 2
},
Q9: {
type: 'integer',
required: true,
size: 2
},
Q10: {
type: 'integer',
required: true,
size: 2
},
Q11: {
type: 'integer',
required: true,
size: 2
},
Q12: {
type: 'integer',
required: true,
size: 2
},
Q13: {
type: 'integer',
required: true,
size: 2
},
Q14: {
type: 'integer',
required: true,
size: 2
},
Q15: {
type: 'integer',
required: true,
size: 2
},
Q16: {
type: 'integer',
required: true,
size: 2
},
Q17: {
type: 'integer',
required: true,
size: 2
},
Q18: {
type: 'integer',
required: true,
size: 2
},
Q19: {
type: 'integer',
required: true,
size: 2
},
Q20: {
type: 'integer',
required: true,
size: 2
},
Q21: {
type: 'integer',
required: true,
size: 2
},
Q22: {
type: 'integer',
required: true,
size: 2
},
Q23: {
type: 'integer',
required: true,
size: 2
},
Q24: {
type: 'integer',
required: true,
size: 2
},
Q25: {
type: 'integer',
required: true,
size: 2
},
Q26: {
type: 'integer',
required: true,
size: 2
},
Q27: {
type: 'integer',
required: true,
size: 2
},
Q28: {
type: 'integer',
required: true,
size: 2
},
Q29: {
type: 'integer',
required: true,
size: 2
},
Q30: {
type: 'integer',
required: true,
size: 2
},
Q31: {
type: 'integer',
required: true,
size: 2
},
Q32: {
type: 'integer',
required: true,
size: 2
},
Q33: {
type: 'integer',
required: true,
size: 2
},
Q34: {
type: 'integer',
required: true,
size: 2
},
Q35: {
type: 'integer',
required: true,
size: 2
},
Q36: {
type: 'integer',
required: true,
size: 2
},
Q37: {
type: 'integer',
required: true,
size: 2
},
Q38: {
type: 'integer',
required: true,
size: 2
},
Q39: {
type: 'integer',
required: true,
size: 2
},
Q40: {
type: 'integer',
required: true,
size: 2
},
Q41: {
type: 'integer',
required: true,
size: 2
},
Q42: {
type: 'integer',
required: true,
size: 2
},
Q43: {
type: 'integer',
required: true,
size: 2
},
Q44: {
type: 'integer',
required: true,
size: 2
},
Q45: {
type: 'integer',
required: true,
size: 2
},
Q46: {
type: 'integer',
required: true,
size: 2
},
Q47: {
type: 'integer',
required: true,
size: 2
},
Q48: {
type: 'integer',
required: true,
size: 2
},
Q49: {
type: 'integer',
required: true,
size: 2
},
Q50: {
type: 'integer',
required: true,
size: 2
},
Q51: {
type: 'integer',
required: true,
size: 2
},
Q52: {
type: 'integer',
required: true,
size: 2
},
freeReview: {
type: 'text',
required: true
}
}
};
ReviewsController.js 학교를 가정
module.exports = {
reviews: function(req, res){
Schools.findOne(1)
.populate('reviews')
.exec(function afterFind(err, theresults) {
if (err) return res.serverError(err);
return res.view({thereviews: theresults});
});
},
schoolreviews: function(req, res){
Reviews.find()
.exec(function afterFind(err, theresults) {
if (err) return res.serverError(err);
return res.view({thereviews: theresults});
});
},
testsearch: function(req, res){
Schools.findOne(1).populate('Reviews').exec(function(err, user) {
console.log(user);
});
},
};