繁体   English   中英

如何在 React + Meteor 项目中限制存储在 material-ui 自动完成组件中的数据库字段?

[英]How do I restrict the db fields stored in a material-ui Autocomplete component in a React + Meteor Project?

我正在使用 React 和 material-ui 构建 Meteor 应用程序。

我通过以下代码将返回的字段限制为名称(和_id):

 const { heroNames } = useTracker(() => {
    const sub = Meteor.subscribe('heroes');

    return {
      heroNames: HeroesCollection.find({}, { name: 1 }, { sort: { name: 1 } }).fetch(),
      loading: !sub.ready(),
    };
  });

然后,我使用 heroNames 中返回的数据渲染我的 MUI 自动完成组件:

<Autocomplete multiple
              id="hero-selection"
              options={heroNames}
              disableCloseOnSelect
              getOptionLabel={(hero) => hero.name}
              isOptionEqualToValue={(option, value) => option._id === value._id}
              onChange={(e, value) => setWarbandHeroes(value)}
              renderOption={(props, hero, { selected }) => (
                        <li {...props}>
                          <Checkbox
                            icon={icon}
                            checkedIcon={checkedIcon}
                            style={{ marginRight: 8 }}
                            checked={selected}
                          />
                          {hero.name}
                        </li>
                      )}
              style={{ width: 500 }}
              renderInput={(params) => (
              <TextField {...params} label="Hero Selection" placeholder="Select Hero" />
                      )}
                    />

但是,当我通过数据库中的自动完成功能保存用户选择的内容时,会存储整个 Hero 记录,而不仅仅是 name 和 _id 字段。 我已经为此困扰了一段时间,并希望得到任何帮助。

Ps - 这是我在 Stack Overflow 上发布的第一个问题。 :)

Meteor 的 API 与 Mongo 略有不同,如果要限制字段需要使用field属性

      heroNames: HeroesCollection.find({}, { fields: { name: 1 } }, { sort: { name: 1 } }).fetch(),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM