我正在使用 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 上發布的第一個問題。:)
uj5u.com熱心網友回復:
Meteor 的 API 與 Mongo 略有不同,如果你想限制你需要使用屬性的欄位field
heroNames: HeroesCollection.find({}, { fields: { name: 1 } }, { sort: { name: 1 } }).fetch(),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/391902.html
