Waterline (ORM)

默认情况下,Sails集成有一个叫做 Waterline(补充自 orm hook.) 的ORM.

使用 Models

此处文档关注在 model 上由 Waterline 提供的方法. 作为它的补充, 能有额为的方法来自 hooks (例如资源丰富的发布/订阅方法), 可以被暴露在下部的转化器中来提供自定义的方法, 或者在你的应用中被手写来封装自定义代码.

想要一个在Sails/Waterline中对 models 更深的理解, 见http://sailsjs.com/documentation/concepts/ORM/Models.html.

Model 自带的方法

通常情况下,model 方法是异步的, 意味着你不能够仅仅调用它然后用它的返回值. 你必须用 callbacks, 或者 promises替代. 大多数 model 的自带方法接受一个回调函数作为一个可选的最终的参数。如果回调函数没有被提供, 一个可链的 Query 对象被返回, 它有想 .where().exec()的方法。参见使用 Queries 了解更多。

方法总结
.create()创建由传入的对象组成的记录
.find()查找与指定条件匹配的记录数组
.findOne()查找与指定条件匹配的单个记录,如果没有,则返回null。
.update()更新符合指定条件的记录,设置attrName:value对的指定对象。
.destroy()销毁符合指定条件的记录。
.findOrCreate()查找与指定条件匹配的单个记录,如果不记录则创建它。
.count()获取符合指定条件的记录总数。
.native()/query()直接调用底层数据库驱动程序。
.stream()返回符合指定条件的可读(对象模式)记录流

sails.models

如果您需要在 Sails 中禁用全局变量, 您还是能够用 sails.models.<model_identity> 来得到的您的 models.

一个model的identity不同于他的 globalId. 这个 globalId 自动决定于model的名字, 然而identity全是小写。 例如你定义在 api/models/Kitten.js 中的 model 有一个叫做 Kitten 的 globalId,但是他的identity是 kitten。 例如。

// Kitten === sails.models.kitten
sails.models.kitten.find().exec(function (err, allTheKittens) {
  // We also could have just used `Kitten.find().exec(...)`
  // if we'd left the global variable exposed.
});

用 Promises

sails.models.kitten.find().then(function(alltheKittens) {
  //.... 
}).catch(function(err){
  //....
});