在 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.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" />
                      )}
                    />

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

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

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

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