gpt4 book ai didi

javascript - meteor 发布复合和嵌套集合

转载 作者:可可西里 更新时间:2023-11-01 09:43:27 25 4
gpt4 key购买 nike

我正在尝试构建一个在 Meteor 中具有多对多关系的应用程序。将有工作、客户和用户集合。客户可以有多个工作,最重要的是多个用户可以处理同一个工作。

我的 fixtures 文件中的作业集合设置如下:

Jobs.insert({
jobNum: 'Somejob',
clientId: 'XXXXXXXX',
clientName: 'Some Client',
rate: XX,
userNames: [
{userId: user1._id},
{userId: user2._id}
],
active: true
});

我正在根据 publish-composite 的自述文件进行发布,但我无法让用户发布到客户端。这是发布代码:

Meteor.publishComposite('jobsActive', {
find: function() {
// Find all active jobs any client
return Jobs.find({active: true});
},

children: [
{
find: function (job) {
// Return a client associated with the job
return Clients.find({_id: job.clientId});
}
},
{
find: function (job) {
// Return all users associated with the job
// This is where the problem is
return Meteor.users.find({_id: job.userNames.userId});
}
}
]
});

我不知道如何正确地查找数组。我尝试了很多东西,但没有任何效果。这可能吗?或者我需要用另一种方式来解决这个问题吗?我考虑过在 users 集合中引用 jobs,但是 jobs 会比 users 多得多,所以这样看起来更有意义。

顺便说一句,我也订阅了“jobsActive”。其他两个系列很好地移交给了客户端;我只是无法发布用户集合。

感谢您的帮助和想法。

最佳答案

job.userNames.userId 在您的集合中不存在。 job.userNames 是一个包含键 userId 的对象数组。

尝试像 _.map( job.userNames, function( users ){ return users.userId } ) 这样的东西。

您的代码将是:

Meteor.publishComposite('jobsActive', {
find: function() {
return Jobs.find({active: true});
},
children: [
{
find: function (job) {
return Clients.find({_id: job.clientId});
}
},
{
find: function (job) {
return Meteor.users.find({ _id: { $in: _.map( job.userNames, function( users ) { return users.userId } ) } });
}
}
]
});

关于javascript - meteor 发布复合和嵌套集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30745470/

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