ウォーターラインを使用して特定のフィールドを選択できることを知りたいのですが、orientdbクエリを以下に示します。
e.g.
select phone from user
このクエリを使用して、ユーザーの頂点から電話を選択したい
userModel.find(phone)
.then(function(phonelist){
if(!phonelist)
console.log('msg: RECORD_NOT_FOUND');
else
console.log(phonelist);
.catch(function(err){ console.log('err: 'err'); });
はい、可能です。たとえば、検索条件にselect
を追加するだけです(ID 1のレコードを検索していると仮定します)。
_userModel.find({ select: ['phone'], id: 1 })
_
または代わりに:
_userModel.find({ select: ['phone'], where: { id: 1 } })
_
または、すべてのレコードが必要な場合は、基準を指定する必要はありません。
_userModel.find({ select: ['phone'] })
_
これはどこにも文書化されていないようですが、文書化する必要があります。バージョン0.11では、model.pick('name', 'age')
を実行してselectを定義することもできます: https://github.com/balderdashy/waterline/pull/952
ソースと詳細- https://stackoverflow.com/a/24170388/1392194
はい、可能ですが、まだ開発中であるため、select
では不可能です。しかし、fields
を使用してそれを達成する方法があります。
Model.find({ id: id }, {
fields: {
name: 1,
phoneNumber: 1
}
}).limit(1).exec(function(...) {};
これはfindOne
では機能しません。
Sailsバージョン1では、find()/ findOne()メソッドへのクエリとプロジェクションを送信するためのプロビジョニングが追加されています。簡単に実行できます:Model.find({where:{id:id}、select:['name'、 'phoneNumber']})
ここで参照を検索します: https://sailsjs.com/documentation/reference/waterline-orm/models/find#?using-projection
。select()メソッドを使用できます
let phones = await userModel.find().select(['phone']);
。select()の反対は。omit()