扩展@jaumard 所说的内容。
背景
通常建议使用标准的水线查询方法,例如find()
, update()
, create()
,destroy()
等。这些方法支持回调和承诺,并且这些方法对任何水线适配器(OrientDB、MySQL、MongoDB 等)的工作方式相同。
有时您可能想做一些标准水线方法不支持的更复杂的事情,为此,sails-orientdb 使用 扩展了水线定义query()
,以及其他方法。
帆东方数据库.query()
Sails-orientdb 查询使用回调,因此您可以像这样使用它:
// Assume a model named "Friend"
Friend.query("SELECT FROM friendTable WHERE name='friend query'", function(err, retrievedUsers){
console.log(retrievedUsers);
});
更新:自 v0.10.53 起,还支持以下内容:
Friend.query("SELECT FROM friendTable WHERE name='friend query'")
.then(function(retrievedUsers){
console.log(retrievedUsers);
});
如果你真的想使用承诺机制,你有两个选择:
许诺query()
通过使用bluebird promise 的 promisify。例子:
var queryPromise = Promise.promisify(User.query);
queryPromise('select...').then(function(){/*...*/})
利用getDB()
另一种选择是使用sails-orientdb 自定义方法getDB
。此方法返回一个可用于承诺查询的Oriento实例。 db
例子:
User.getDB().query('select from OUser where name=:name', {
params: {
name: 'Radu'
},
limit: 1
}).then(function (results){
console.log(results);
});