我正尝试在创建员工时与猫鼬建立多对多关系。然而,我发现了以下错误,当我打电话.post
:在猫鼬中创建多对多的关系,填充不是函数
TypeError: Employee.create(...).populate is not a function
我.get
中我也用.populate
不抛出任何错误。这让我想知道为什么.post
呢。 这是我的代码:
app.route('/api/employees')
.get(function (req, res, next) {
Employee.find()
.populate('statuses')
.exec(function (err, employee) {
if (err) {
return next(err);
}
res.json(employee);
});
})
.post(function (req, res, next) {
Employee.create(req.body)
Employee.findById(req.params._id)
.populate('statuses')
.exec(function (err, employee) {
if (err) {
return next(err);
}
res.json(employee);
});
});
这是状态类:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var statusSchema = new Schema({
name: ['In office', 'Project', 'Fired', 'Resigned', 'Ill']
});
module.exports = mongoose.model('Statuses', statusSchema);
这是员工类:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var employeeSchema = new Schema({
name: String,
division: ['IT','System','Trainee','Intern'],
statuses: [{type:Schema.Types.ObjectId, ref: 'Statuses'}],
project: Boolean,
comment: {type:String, default:null}
});
module.exports = mongoose.model('Employees', employeeSchema);
看来.post
似乎也抛出500错误,但我不确定这两者是否有关系。 在上面的代码中是否有明显的错误,或者我应该在其他地方寻找错误吗?
我与创建对象的'.exec',这我没有打电话,直到之后的'.populate' – Snackoverflow
是的,但事实是,你可以”这样做。查看文档..只有当对象被创建,并且你想更新或保存,那么你可以填充它们。 – maki10
我已经更新了我的'.post'它不再抛出错误,但它似乎没有链接数据库中的'状态'。当我看着Robomongo时,状态只是显示为员工对象中的空白元素。对我而言,我似乎和文档描述一样。我在正确的轨道上吗? – Snackoverflow