13

我只想知道是否可以使用水线选择特定字段,下面给出了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'); });
4

4 回答 4

29

是的,有可能,您只需要添加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')https ://github.com/balderdashy/waterline/pull/952

于 2015-04-21T10:46:21.727 回答
4

在 Sails 版本 1 中,他们添加了向 find()/findOne() 方法发送查询和投影的规定。你可以简单地做: Model.find({where: {id: id}, select: ['name', 'phoneNumber']})

在此处查找参考: https ://sailsjs.com/documentation/reference/waterline-orm/models/find#?using-projection

于 2018-08-30T22:07:37.217 回答
4

来源和更多细节- https://stackoverflow.com/a/24170388/1392194

是的,这是可能的,但不是select因为它仍在开发中。但是有一种方法可以使用fields.

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

这不适用于findOne.

于 2017-01-23T08:06:46.743 回答
2

您可以使用.select()方法

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

.select()的反义词是.omit()

于 2019-08-09T17:24:23.017 回答