我有文档文件夹的以下架构:
var permissionSchema = new Schema({
role: { type: String },
create_folders: { type: Boolean },
create_contents: { type: Boolean }
});
var folderSchema = new Schema({
name: { type: string },
permissions: [ permissionSchema ]
});
因此,对于每个页面,我可以拥有许多权限。在我的 CMS 中有一个面板,我在其中列出了所有文件夹及其权限。管理员可以编辑单个权限并保存。
我可以轻松地保存整个文件夹文档及其权限数组,其中只修改了一个权限。但我不想保存所有文档(真正的架构有更多的字段)所以我这样做了:
savePermission: function (folderId, permission, callback) {
Folder.findOne({ _id: folderId }, function (err, data) {
var perm = _.findWhere(data.permissions, { _id: permission._id });
_.extend(perm, permission);
data.markModified("permissions");
data.save(callback);
});
}
但问题是烫发总是未定义的!我试图以这种方式“静态”获取权限:
var perm = data.permissions[0];
并且效果很好,所以问题是 Underscore 库无法查询权限数组。所以我想有一种更好的(和工作的)方法来获取所获取文档的子文档。
任何的想法?
PS:我解决了使用“for”循环检查 data.permission 数组中的每个项目并检查 data.permissions[i]._id == permission._id 但我想要一个更聪明的解决方案,我知道有一个!