1、引子
mongoose的schema支持Object格式的数据,常常一堆可能不定的元数据或者配置信息放在该字段里。如用户表有3个字段:
email:用户邮箱
password:用户密码
meta:用户元信息,因为目前不定,就定义类型为Object,可以放用户昵称、年龄、QQ号、登录注册时间等等
要操作meta字段就设计到该字段的增删改查了,而不是整个文档的增删改查,因此就这个需求,写了个小model(mongoose-objectpath)专门来处理这个字段的增删改查。
2、模块API
2.1、初始化
使用方法也很简单:
var mongooseObjectPath = require('mongoose-objectpath');
// 定义好 Schema 后
mongooseObjectPath(Schema, 'meta');
如上初始化完成后,会在Schema对象上添加3个静态方法:
setMeta:获取数据
getMeat:设置数据
removeMeta:删除数据
可能你注意到了,如果字段名称为config,那么对象的方法名称就是setConfig/getConfig/removeConfig。
2.2、setMeta
Model.setMeta(conditions, key, value, callback)
Model.setMeta(conditions, {
key1: value1,
key2: value2,
}, callback)
2.3、getMeta
Model.getMeta(conditions, key, callback)
Model.getMeta(conditions, [key1, key2], callback)
2.4、removeMeta
Model.removeMeta(conditions, key, callback)
Model.removeMeta(conditions, [key1, key2], callback)