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){
//....
});