这是一个MERN应用,托管在github上,在本地主机上完全可以正常运行。不幸的是,它在Heroku上不起作用。
问题是API请求,它必须返回一个对象并填充OID数组(请参见部门模型)。 API请求正在运行。我从MLab获取数据,但没有 填充 ...却返回了:"surveys":[]
API文件
router.get('/department_data/:d_oid', function(req, res) {
Department.findOne({_id: req.params.d_oid}).populate("surveys").exec(function(err,doc){
if(err) throw(err)
res.send(doc)
})
});
部门模型
**Department Model**
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
// Create the survey schema
var departmentSchema = new Schema({
department_name: {
type: String,
trim: true,
required: true
},
surveys: [{
type: Schema.Types.ObjectId,
ref: 'Surveys'
}],
participants: [{
type: String
}],
create_date: {
type: Date,
default: Date.now
},
created_by: {
type: Schema.Types.ObjectId,
ref: 'Created_By'
},
});
departmentSchema.index({ department_name: 1, created_by: 1}, {unique: true});
const Department = mongoose.model('Departments', departmentSchema);
module.exports = Department;
调查模型
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
// Create the survey schema
var surveySchema = new Schema({
survey_name: {
type: String,
trim: true,
required: true
},
questions: [{
type: Schema.Types.ObjectId,
ref: 'Questions'
}],
created_date: {
type: Date,
default: Date.now
}
});
const Survey = mongoose.model('Surveys', surveySchema);
module.exports = Survey;
答案 0 :(得分:0)
已解决。
问题出在数据库中:ref OID被先前的更新打乱了,所以当它试图填充时,Mongoose找不到任何匹配的OID。
解决方案:我们必须清除并重新播种。当存在正确的OID引用时,此代码将在localhost和Heroku中按预期工作。