我无法在mongoose中填充并找到指定的类别帖子。它总是返回我的所有帖子,它不会过滤指定类别名称的帖子,在 searchQuery.category 我通过搜索的类别。
new_node
这是我的代码,它不会评估类别。
此代码为我提供过滤记录
var query = posts.find();
if (searchQuery.tags) {
searchQuery instanceof Array ?
query.where('tags').in(searchQuery.tags) :
query.where('tags').equals(searchQuery.tags);
}
if (searchQuery.publish) {
query.where('publish').equals(true);
}
if (searchQuery.category) {
query.populate({
path: 'category',
match: { name: searchQuery.category },
model :'Category'
});
}
if (searchQuery.series) {
query.populate({
path: 'series',
match: { name: searchQuery.series }
});
}
return countPost(searchQuery).then(function (count) {
return query.select('title heading tags description blogImage createAt')
.skip(((parseInt(pageNo, 10) || 1) - 1) * parseInt(limit, 10))
.limit(parseInt(limit, 10) || 10)
.exec()
.then(function (posts) {
return { post: posts, total: count, currentPage: pageNo, limit: limit };
});
});
答案 0 :(得分:1)
.populate方法的工作方式略有不同。
它不会过滤原始集合。相反,它会将您传递的查询应用于已填充的集合。如果查询适用,则填充。否则 - 设置null而不是填充文档。
因此,无视此class CreateAccountsAccountMembership < ActiveRecord::Migration[5.0]
def change
create_table :accounts_account_memberships do |t|
t.references :accounts_account, index: { name: 'index_accts_acct_mbrships_on_accts_acct_id' }
t.references :users_account_member, polymorphic: true, index: { name: 'index_accts_acct_mbrships_on_users_acct_member_type_and_id' }
t.timestamps null: false
end
end
end
,您仍会收到所有帖子。
有两种解决方法。