Rannicchiato in questo (problema leggermente fastidioso) Sto cercando di cercare tutti i record in una raccolta e non mostrare (o mostrare) un campo specifico (punteggio). Questo è solo un esempio e non riflette il mio codice attuale, ma il problema è sempre riproducibile. I campi che sto escludendo sono molto grandi e sto solo cercando di generare un menu di record disponibili.
Comandi come
players.find({},{score:1}) players.find({},{score:0})
Restituisci sempre ogni campo, invece di triggersre l’esclusione / inclusione in mongodb. Sono preoccupato di nulla, dal momento che il modello potenzialmente può controllare quali dati vengono resi in html? Si sente ancora come i dati vengono trasferiti al lato client indipendentemente; e si presenta nella console.
la tua syntax è un po ‘off, dovrebbe essere
CollectionName.find({}, {fields: {'onlyThisField':1}});
o
CollectionName.find({}, {fields: {'everythingButThisField':0}});
il tuo modello controlla effettivamente quali dati vengono visualizzati, ma ci sono ancora molti scenari in cui la limitazione del campo ha senso: privacy dei dati o efficienza (alcuni campi di tutti i record, tutti i campi del record “corrente”) sono due comuni
non lo hai menzionato, ma questo di solito è all’interno di una funzione di pubblicazione – vedi http://docs.meteor.com/#meteor_publish – il modificatore dei fields
è disponibile anche sul client, ma non limita i dati inviati al client, solo per il modello – la riduzione / selezione del campo lato server ha diversi vantaggi
–
controlla di aver rimosso anche il pacchetto di autopublish
, tuttavia dovresti vedere un avviso se lo hai attivo e scrivi le tue funzioni di pubblicazione, che è il posto in cui useresti più comunemente i fields
Innanzitutto, se vuoi controllare alcuni campi in Collection.find()
, puoi provare a farlo in questo modo:
CollectionName.find({}, {fields: {field:1}});
ma funzionava solo sul server.
Oppure prova questo:
Sul server:
Meteor.publish("myCollection", function () { return SvseTree.find({},{fields: {field:1}}); });
Sul client:
Meteor.subscribe("myCollection");
quindi eseguire meteor remove autopublish
.
Secondo, se vuoi ottenere Array of Collection.find (), prova a farlo: Collection.find (). Fetch ();