我正在尝试获取所有记录但是使用了选定的字段,我尝试了以下方法,但没有一个工作:
Post.find(
{
where: {},
select: ['title']
}
);
Post.find(
{},
{
fields: {
title: 1
}
}
);
答案 0 :(得分:2)
正如this回答指出的那样,只要您传递其他参数,例如limit
或order
,字段参数就会有效。&#34; < / p>
或者,如果您希望在整个应用程序中使用此功能,则可以在toJSON
下为您的模型定义自定义attributes
功能。如果没有,您仍然可以在其他一些(例如filter
)下定义它,并使用map
返回自定义对象而不是默认模型。但请记住在使用map
时要注意控制流程。使用async / promises / raw逻辑避免在处理所有对象之前返回。
答案 1 :(得分:1)
答案 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)提示
希望这有帮助!