query 查询

总览

模型建立之后,就可以用模型进行数据操作了,mongoose中,链式操作跟jQuery很类似,不过关于回调有两种方式,目前官方文档上的方式是可怕的地狱模式,不过改成then也是很轻松的时期,以下有些代码摘自官方文档,用的是地狱模式

json查询与方法查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// With a JSON doc
Person.
find({
occupation: /host/,
'name.last': 'Ghost',
age: { $gt: 17, $lt: 66 },
likes: { $in: ['vaporizing', 'talking'] }
}).
limit(10).
sort({ occupation: -1 }).
select({ name: 1, occupation: 1 }).
exec(callback);
// Using query builder
Person.
find({ occupation: /host/ }).
where('name.last').equals('Ghost').
where('age').gt(17).lt(66).
where('likes').in(['vaporizing', 'talking']).
limit(10).
sort('-occupation').
select('name occupation').
exec(callback);

validation 验证

验证规则可以参考以下几条规则

  • 验证是在SchemaType定义
  • 验证是中间件。Mongoose寄存器验证作为pre(‘save’)钩子在每个模式默认情况下。
  • 你可以手动使用doc运行验证。validate(callback) or doc.validateSync()。
  • 验证程序不运行在未定义的值上。唯一的例外是required验证器。
  • 验证异步递归;当你调用Model#save,子文档验证也可以执行。如果出现错误,你的 Model#save回调接收它。
  • 验证是可定制的。

内置验证器

所有的schematypes有内置的require验证器。所需的验证器使用SchemaType的checkrequired()函数确定的值满足所需的验证器。+

  • 数值( Numbers )有最大(man)和最小(min)的验证器。
  • 字符串(String)有枚举,match,maxLength和minLength验证器。