/ / Mongoose.js: è possibile cambiare il nome di ObjectId? - node.js, mongodb, mangusta

Mongoose.js: è possibile cambiare il nome di ObjectId? - node.js, mongodb, mangusta

Qualche domanda sull'Idea mongo in mangusta

1) Può essere campo ObjectId con il nome non come _id? E come farlo? Quando faccio nel mio codice:

MySchema = new mongoose.Schema({
id  : mongoose.Schema.ObjectId
});

non cambia nulla.

2) Se ho il campo objectId chiamato _id è possibile restituire dalla richiesta un altro nome per questo campo (ad esempio solo "id" - per inviarlo sulla risposta web in);

3) E domanda solo per capire: perché il campo Objectid _id accessibile attraverso la proprietà "id" non è "_id"?

Grazie, Alex

risposte:

2 per risposta № 1

L'elemento "_id" fa parte di mongodbarchitettura che garantisce che ogni documento di una collezione possa essere identificato in modo univoco. Questo è particolarmente importante se si usa il sharding per consentire un identificatore univoco su una macchina disparata. Quindi questa è una scelta di design quindi non c'è modo di cavalcarla :)

Il valore predefinito per _id viene generato come segue:

  • timestamp
  • hash del nome host della macchina
  • pid del processo di generazione
  • incremento

ma puoi usare qualsiasi valore tu desideri finché è unico.

Se è più facile per te pensare al _id di qualcosa che deve essere lì, ma non ti interessa davvero :) Lascia semplicemente il sistema per generarlo automaticamente e utilizzare il tuo identificatore.

Quindi, se vuoi ancora creare il tuo "id", esegui qualcosa del genere:

db.mySchema.ensureIndex({"id": 1}, {"unique" : true})

ma assicurati che sia davvero unico e che non sia in conflitto con l'API che usi.

2) Rinominalo dal lato dell'applicazione, appena prima di inviarlo come risposta web.

3) Penso che questo sia dovuto all'API che usi. Forse l'autore ha trovato più logico restituire l'id invece di _id? Onestamente mai provato mangusta :)