WaterlineJs find()没有标准,并且提供的字段/ select不起作用

时间:2015-07-21 17:39:57

标签: sails.js waterline

我正在尝试获取所有记录但是使用了选定的字段,我尝试了以下方法,但没有一个工作:

Post.find( { where: {}, select: ['title'] } );

Post.find( {}, { fields: { title: 1 } } );

3 个答案:

答案 0 :(得分:2)

正如this回答指出的那样,只要您传递其他参数,例如limitorder,字段参数就会有效。&#34; < / p>

或者,如果您希望在整个应用程序中使用此功能,则可以在toJSON下为您的模型定义自定义attributes功能。如果没有,您仍然可以在其他一些(例如filter)下定义它,并使用map返回自定义对象而不是默认模型。但请记住在使用map时要注意控制流程。使用async / promises / raw逻辑避免在处理所有对象之前返回。

答案 1 :(得分:1)

问题已在sails-mongo最新版本中解决:

https://github.com/balderdashy/waterline/issues/1098

由于

答案 2 :(得分:0)

我已经玩过试图超越回答使用限制或命令进行投射无效。

我确实在此处的文档中看到了这一点: http://sailsjs.org/documentation/reference/waterline-orm/models/native

提供开箱即用的解决方案,确切地说您正在做的事情(粘贴在这里以方便使用)。

Pet.native(function(err, collection) {
    if (err) return res.serverError(err);

    collection.find({}, {
        name: true
    }).toArray(function (err, results) {
        if (err) return res.serverError(err);
        return res.ok(results);
   });
});

交换响应基础并将Pet更改为Post,这应该在sails控制台中工作:

Post.native(function(err, collection) {
  if (err) throw new Error(err);

  collection.find({}, {
     title: true
  }).toArray(function (err, results) {
    if (err) throw new Error(err);
    console.log(results);
  });
});

你仍然会得到_id字段,如果你不想这样,那么点击Mongo文档就不会得到那些提示(标题:true,_id:false)提示

希望这有帮助!