【发布时间】:2014-11-27 04:45:12
【问题描述】:
我对文档文件夹有以下架构:
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);
});
}
但问题是 perm 总是 undefined!我尝试以这种方式“静态”获取权限:
var perm = data.permissions[0];
而且效果很好,所以问题是下划线库无法查询权限数组。所以我想有一个更好的(和工作)方法来获取获取的文档的子文档。
有什么想法吗?
PS:我解决了使用“for”循环检查 data.permission 数组中的每个项目并检查 data.permissions[i]._id == permission._id 但我想要一个更智能的解决方案,我知道有一个!
【问题讨论】:
标签: javascript node.js mongodb mongoose mongodb-query