web-dev-qa-db-ja.com

データベースから特定のフィールドを選択します

ウォーターラインを使用して特定のフィールドを選択できることを知りたいのですが、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'); });
12
Zeeshan

はい、可能です。たとえば、検索条件に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

28
Dário

ソースと詳細- https://stackoverflow.com/a/24170388/1392194

はい、可能ですが、まだ開発中であるため、selectでは不可能です。しかし、fieldsを使用してそれを達成する方法があります。

Model.find({ id: id }, {
  fields: {
    name: 1,
    phoneNumber: 1
  }
}).limit(1).exec(function(...) {};

これはfindOneでは機能しません。

4

Sailsバージョン1では、find()/ findOne()メソッドへのクエリとプロジェクションを送信するためのプロビジョニングが追加されています。簡単に実行できます:Model.find({where:{id:id}、select:['name'、 'phoneNumber']})

ここで参照を検索します: https://sailsjs.com/documentation/reference/waterline-orm/models/find#?using-projection

3
Niraj Gupta

。select()メソッドを使用できます

let phones = await userModel.find().select(['phone']);

。select()の反対は。omit()

1
Taha Boulehmi