Widziałem to pytanie, ale wciąż mam problemy z obsługą Mango Mongo _id
w id
. Używam mangusty jako mojej ORM i chociaż ma wirtualne, nie mogę sprawić, żeby działała poprawnie. Poniżej znajduje się to, co mam w moim modelu mongoose.Ember, Ember Data i MongoDB _id
próbować naprawić Od backend
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
Kiedy utworzyć nową instancję tego modelu w ekspresowym mogę zrobić patrzeć jak apt.id
i uzyskać identyfikator z powrotem, ale kiedy wysłać odpowiedź w dół do klienta, po prostu mam _id
, a nie id
.
Drugim rozwiązaniem, które próbowałem, było stworzenie obliczonej właściwości dla id
, ale z jakiegokolwiek powodu ember tego nie lubi. Tutaj są 2 problemy. Ember nie respektuje obliczonej właściwości o nazwie id
lub przynajmniej już nie. Tak wygląda mój model danych ember.
próbować naprawić go z Frontend
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')
});
w swoim szablonie poniżej, nic nie świadczy o id.
{{#each apartment in controller}}
<li>{{apartment.body}} | {{apartment.date}} | {{apartment.href}} {{apartment.id}}</a> {{#linkTo 'apartment' apartment }} View {{/linkTo}} </li>
{{/each}}
W linkTo
pomocnicy pracują ale url ma wartość null, gdzie id powinno być. Powoduje to przerwanie backbutton i wielokrotne ładowanie danych. Poniżej znajduje się mój router dla pewnego kontekstu.
App.Router.map(function(){
this.resource('apartments', function(){
this.resource('apartment', { path: ':apartment_id' });
});
});
Zmiana nazwy mojego obliczonego id
własności do czegoś podobnego foo
a następnie zmieniając mój router do path: ':apartment_foo'
wyników w adresach URL, które mają odniesienie do obiektu w adresie URL, np #/apartments/<App.Apartment:ember357:null>
.
To takie rzeczy, które mnie denerwują. Każda pomoc będzie doceniona.
Dla mnie zmienia to 'null' część trasy na' [Object Object] ', ponieważ identyfikator obiektu BSON jest serializowany jako obiekt (np.' "_id": {"$ oid": "5147130ffddd310aeb000001"} ') . Czy w pierwotnym pytaniu pojawiła się poprawka, która zamienia ją w ciąg znaków? –