我正在尝试为我的社交帖子提供buildQuery
功能:
const buildQuery = (criteria) => {
const { userId, interest } = criteria;
const query = {};
if (interest !== 'everything') {
if (interest === 'myInterests') {
User.findById(userId).then(user => {
return query.categories = {
$in: user.interests
};
});
} else {
query.categories = { $eq: interest };
}
}
return query;
};
如果interest
以myInterests
的形式出现,那么我想找到属于该用户的interests
数组(userId
)。
每个帖子都有一系列类别:query.categories
。
我收回interests
数组后,我想查找query.categories
,过滤到用户感兴趣的帖子myInterests
。
现在,我的测试表明这只是被忽略了。它带回了所有帖子。我在这里做错了什么?
谢谢
答案 0 :(得分:0)
您需要等待结果,为此您的函数需要为更新的查询返回另一个承诺。
<form class="form">
<input id="newInput" type="text" placeholder="Dodaj pozycję">
<button id="createNew" type="button">Dodaj</button>
</form>
<h2>Moja lista:</h2>
<div class="listBg">
<ul id="list">
</ul>
</div>
<button id="deleteAll" type="button">Wyczyść</button>
然后在执行查询之前等待此承诺:
function buildQuery({userId, interest}) {
if (interest === 'everything')
return Promise.resolve({});
else
return (interest === 'myInterests'
? User.findById(userId).then(user => ({$in: user.interests}))
: Promise.resolve({$eq: interest})
).then(categories => ({categories}));
}