我有两个猫鼬模特。类别和子类别。
使用meanjs.org。
中的登录名自动加载这些模型 category.model.js
如下
...
const Schema = mongoose.Schema;
const CategorySchema = new Schema({
name: {
type: String,
index: {
unique: true,
sparse: true
},
validate: [validateProperty, 'Please enter Category Name !']
},
description: {
type: String,
trim: true
},
subCatagories: [
{
type: Schema.Types.ObjectId,
ref: 'SubCategory'
}
],
updated: {
type: Date
},
created: {
type: Date,
default: Date.now
},
status: {
type: String,
enum: [
'active', 'inactive', 'removed'
],
default: 'active'
}
});
...
mongoose.model('Category', CategorySchema);
subcategory.model.js
如下
...
const Schema = mongoose.Schema;
const SubCategorySchema = new Schema({
name: {
type: String,
index: {
unique: true,
sparse: true // For this to work on a previously indexed field, the index must be dropped & the application restarted.
},
validate: [validateProperty, 'Please enter SubCategory Name !']
},
description: {
type: String,
trim: true
},
updated: {
type: Date
},
created: {
type: Date,
default: Date.now
},
status: {
type: String,
enum: [
'active', 'inactive', 'removed'
],
default: 'active'
}
});
...
mongoose.model('SubCategory', SubCategorySchema);
通常子类别和类别将单独添加,稍后我需要将子类别分配给类别。
我的类别更新方法如下所述
...
categoryRouter.route('/:catId').put((req,res)=>{
let category = req.category;
category = _.extend(category, _.pick(req.body, whitelistedFieldsForUpdate));
category.updated = Date.now();
category.save(function(err) {
if (err) {
return res.status(422).json({message: err});
}
res.json(category);
});
});
...
类别创建路线如下
categoryRouter.route('/').post((req, res) => {
req.body = _.pick(req.body, whitelistedFieldsForCreate);
let category = new Category(req.body);
category.save().then((data) => {
if (!data) {
res.status(422).json({message: "An error occured saving Category!"});
}
res.status(200).json(data);
}).catch((err) => {
res.status(422).json(err);
})
}));
首先,我发布到子类别端点并创建了一些子类别。然后我POST到类别,没有子类别,也创建了类别对象。现在我需要用它的子类别ID PUT(更新)类别对象来放入它的子类别数组。
当我发送一个带有子类别的放置请求时,对象ID就像数据库中存在的子类别的592e9878ee00dd962deb6e2e
一样,它不会更新。