[英]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.