从数据库中选择特定字段

时间:2015-04-21 09:50:33

标签: waterline sails-orientdb

我只想知道是否可以使用水线选择特定字段,下面给出了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 个答案:

答案 0 :(得分:27)

是的,可以,您只需要在搜索条件中添加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

来定义选择

答案 1 :(得分:4)

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

是的,它是可能的但不是select,因为它仍处于开发阶段。但是有一种方法可以使用fields实现它。

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

这不会与findOne合作。

答案 2 :(得分:2)

在Sails版本1中,他们增加了发送查询和投影到find()/ findOne()方法的规定。您可以简单地执行以下操作: Model.find({其中:{id:id},选择:['name','phoneNumber']})

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

答案 3 :(得分:1)

您可以使用 .select()方法

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

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