我是 mongo DB 的新手。我正在使用 MEAN 堆栈开发应用程序。在我的后端,我有两个模型 - 功能和项目。
项目模式有一个名为“特征”的属性,它是一个特征对象的数组。
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var ProjectSchema = new Schema({
name: {
type: String,
default: '',
trim: true
},
features:{
type: [Schema.ObjectId],
ref: 'Feature'
}
});
/**
* Statics
*/
ProjectSchema.statics.load = function(id, cb) {
this.findOne({
_id: id
})
.populate('features')
.exec(cb);
};
mongoose.model('Project', ProjectSchema);
请注意,我对功能和项目架构有单独的文件。我将两种模式都注册为猫鼬模型。对于导出以下中间件功能的项目,我也有一个控制器:
'use strict';
/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Project = mongoose.model('Project'),
Testcase = mongoose.model('Feature'),
_ = require('lodash');
/**
* Find project by id
*/
exports.project = function(req, res, next, id) {
Project.load(id, function(err, project) {
if (err) return next(err);
if (!project) return next(new Error('Failed to load project ' + id));
console.log(project.features.length);
req.project = project;
next();
});
};
因为我在 Project 模式的静态加载函数中使用了“.populate('features')”,所以我本来期望上面项目对象中的 Feature 对象的所有细节。但它没有发生,它为 features 属性返回一个空数组。谁能告诉我我在这里错过了什么?