gpt4 book ai didi

javascript - 根据_id限制发布限制

转载 作者:行者123 更新时间:2023-12-03 09:45:44 24 4
gpt4 key购买 nike

目前我有这个发布功能

Meteor.publish('Questions', function(limit, skip) {
check([limit, skip], [Number]);
var findAnswers = UserInfo.find({
userId: this.userId
}).fetch();

return Questions.find({}, {
_id: {
$not: findAnswers.questionid
}
}, {
skip: skip,
limit: limit
});
});

所以基本上有两个集合,问题和用户信息(又名用户答案,嗯,我想我会更改名称),所以在用户信息上我有用户的所有答案。

现在,我当前向用户返回 1x1 问题,这适用于限制(1)和跳过工作,但现在我不想向用户发送他已经回答的问题,我尝试 $不是运算符(operator),但它仍然将问题返回给客户端(用户已经回答的问题)。

这里的$not是正确的运算符吗?这也将是可扩展的?假设将来用户回答 10 个问题,是否需要数组? (保存已回答问题的 ID)。

更新

我现在已经做了类似的东西。

Meteor.publish('Questions', function(limit, skip) {
check([limit, skip], [Number]);

var idsArray =[], //Ids array to hold all the current answered questions ids

findAnswers = UserInfo.find({ //Simple query
userId: this.userId
}).fetch();

_.each(findAnswers, function(id) {
idsArray.push(id.questionid); //forEach to push the ids on the query
});

return Questions.find({}, { //Returning only questions
skip: skip, //with no answers to the client
limit: limit
});
});

现在我得到了一个 _ids 数组,我怎样才能发送与查询中的 id 不匹配的文件?

第二次更新

经过一番研究,我发现$nin可以做到这一点,但这似乎不起作用,无论如何,仍然将 3 个文档返回给客户端

这里有更多信息。

这是我的问题查询。

> Questions.find().fetch()
[ { _id: '2eGSTigujteL4X7qG',
title: 'Where you work?',
body: 'Tell us about your job' },
{ _id: 'ByiJGwgHTm5dk5CBj',
title: 'Where did you study?',
body: 'Tell us about your where did you study' },
{ _id: 'gExyMfiivpb4ZtQTb',
title: 'Did you have childs?',
body: 'Tell us about your childs' } ]

现在这是我的idsArray

 [ '2eGSTigujteL4X7qG', 'ByiJGwgHTm5dk5CBj' ]

这就是我在查询中的做法。

  returnQuestions.find({}, {
_id: {
$nin: [idsArray] //already try without []
},
skip: skip,
limit: limit
});

但这仍然向客户端返回 3 个对象,而不是仅 1 个,这应该只返回带有 _id:"gExyMfiivpb4ZtQTb" 的对象,对吧?我不知道我的错误在哪里。

最佳答案

如果您的最后一个代码片段是代码中的实际复制+粘贴,则您的 find() 语法错误(您将选择器放在选项对象中并将选择器对象留空)。你想要的可能应该是这样的:

returnQuestions.find(
{
_id: {
$nin: idsArray // assuming this already is an Array you of course shouldn't add brackets around it
}, {
skip: skip,
limit: limit
});

并且 $nin 确实应该是适合您的情况的正确运算符(您也可以使用不同的方法)。

关于javascript - 根据_id限制发布限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31038968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com