Ich habe gesehen, diese Frage gesprochen, aber ich habe immer noch Probleme mit Manhandling Mongo _id
in id
. Ich benutze Mungo als mein ORM und während es virtuals hat, kann ich nicht scheinen, dass es richtig funktioniert. Unten ist, was ich in meinem Mungo-Modell habe.Ember, Ember Data und MongoDBs _id
Versuch Vom Backend zu beheben
mongoose = require 'mongoose'
Schema = mongoose.Schema
ObjectId = Schema.ObjectId
ApartmentSchema = new Schema
body: String
date: { type: Date, default: Date.now }
deleted: {type: Boolean, default: false}
saved: {type: Boolean, default: false}
visited: {type: Boolean, default: false}
email: String
phoneNumber: String
href: String
ApartmentSchema.virtual('id').get -> return @_id
module.exports = mongoose.model 'Apartment', ApartmentSchema
Wenn ich eine neue Instanz dieses Modells in Express erstelle ich die ID wieder ein nachschauen wie apt.id
und bekommen tun können, aber wenn ich die Antwort nach unten schicken an den Kunden, ich habe nur _id
und nicht id
.
Die zweite Lösung, die ich ausprobiert habe, war, eine berechnete Eigenschaft für id
zu erstellen, aber aus irgendeinem Grund mag ember das nicht. Es gibt 2 Probleme hier. Ember respektiert eine berechnete Eigenschaft namens id
nicht oder zumindest nicht mehr. So sieht mein Glutendatenmodell aus.
Versuch, ihn vom Frontend zu beheben
App.Apartment = DS.Model.extend({
body: DS.attr('string'),
date: DS.attr('date'),
deleted: DS.attr('boolean'),
saved: DS.attr('boolean'),
visited: DS.attr('boolean'),
email: DS.attr('string'),
phone: DS.attr('string'),
_id: DS.attr('string'),
id : function() {
return this.get('_id')
}.property('_id')
});
In meiner Vorlage unten, macht nichts für die ID.
{{#each apartment in controller}}
<li>{{apartment.body}} | {{apartment.date}} | {{apartment.href}} {{apartment.id}}</a> {{#linkTo 'apartment' apartment }} View {{/linkTo}} </li>
{{/each}}
Die linkTo
Helfer arbeiten, aber die URL hat null, wo die ID sein sollte. Dies führt dazu, dass der Zurück-Knopf aufgebrochen wird und die Daten mehrfach geladen werden. Unten ist mein Router für irgendeinen Kontext.
App.Router.map(function(){
this.resource('apartments', function(){
this.resource('apartment', { path: ':apartment_id' });
});
});
Ändern des Namens meines berechnet id
Eigenschaft auf so etwas wie foo
und dann mein Router path: ':apartment_foo'
Ergebnisse in Urls zu ändern, die die Objektreferenz in der URL zB haben: #/apartments/<App.Apartment:ember357:null>
.
Es ist Zeug wie das, das mich über Glut erregt. Jede Hilfe wäre willkommen.
Für mich ändert dies den 'Null'-Teil der Route zu' [object Object] ', da die BSON Objekt ID als Objekt serialisiert wird (zB' "_id": {"$ oid": "5147130ffddd310aeb000001"} ') . Gab es eine Lösung in Ihrer ursprünglichen Frage, die daraus eine Zeichenfolge macht? –