【问题标题】:Meteor SimpleSchema with user dropdown带有用户下拉菜单的 Meteor SimpleSchema
【发布时间】:2015-09-30 01:57:30
【问题描述】:

我在 Meteor 中有一个应用程序,其想法是管理员用户可以添加一个文档并将其分配给它的一个客户(客户存储在用户集合中)。所以我想在文档插入视图上向客户展示一个下拉框。架构的相关代码如下:

customer: {
    type: [String],
    label: "Customers",
    allowedValues: function () {
      return Meteor.users.find().map(function (user) {
        return user._id
      });
    },
    autoform: {
      options: function () {
        return Meteor.users.find({}).map(function(user) {
          return {
            value: user._id,
            label: user.profile.name
          }
        })
    }
  },
    optional: true
  }

当我输入类型:字符串(而不是 [String])时,它仅在下拉框中显示当前用户。如果我使用 [String] (应该如此),下拉框实际上会变成一个带有 3 个字段(对于它找到的所有用户)的文本框(它没有典型的下拉行为),但它只显示第一个再次,但为其他 2 留下占位符。

视图使用:

{{> afQuickField name='customer'}}

【问题讨论】:

    标签: meteor


    【解决方案1】:

    重要提示:账号包,默认不发布用户收藏。您必须在您的服务器中编写一个新的发布方法,并在您的客户端中编写相应的订阅才能使其正常工作。

    没有继续阅读..

    嗯.. 这有点棘手。查看下面的代码并相应地编辑您的“自动生成”部分。

                 autoform: {
                 options: function () {
                var options = [];
                Meteor.users.find().forEach(function (element) {
                    options.push({
                        label: element.profile.name, value: element._id
                    })
                });
                return options;
                }
    
              }
    

    选择框“选项”所需的语法是:

    选项:{[label,value],...}

    上面的代码从用户集合中读取所有行,并将每一行作为一个数组推送到一个名为'options'的数组中。

    希望这对您有所帮助或提供一些见解。

    请注意,仅当您的收藏订阅/发布正确时,上述内容才有效。

    看下面的代码来获得一个简单的想法。

              if (Meteor.isClient) {
                Meteor.subscribe('allUsers')
               }
    
    
           if (Meteor.isServer) {
             Meteor.publish('allUsers', function() {
               return Meteor.users.find({}, {fields:{username:1,emails:1}})
             })
            }
    

    【讨论】:

    • 您好,非常感谢您的回答。我完全理解使用 forEach 的原因。但是,我认为这个问题与我的 Document 集合只看到一种用途有关。为了测试我已将 console.log(Meteor.users.find().count()) 放在 Document 集合的开头,它总是返回这个“1”(用户)。我的 Document 集合如何查看所有用户而不是仅查看登录用户?服务器端看到 3 个用户,客户端看到 1 个用户,由于我的下拉框是客户端,它只检测到 1 个用户。
    • 你能看看你的订阅方式是否设置正确吗?
    • 它不起作用的原因是,默认情况下,accounts 包只发布当前用户,实际上我需要明确设置订阅,我在相关路线中做了。所以知道它工作得很好。再次感谢!
    • 我认为您的订阅和发布内容是正确的。如果它现在对您有用,只需投票给答案,这样它就会对社区中的其他人有所帮助。干杯!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    相关资源
    最近更新 更多