この質問が話題になっているのを見てきましたが、Mongoをに操作する際にまだ問題があり_id
ますid
。私はORMとしてマングースを使用していますが、仮想化されているものの、正しく機能させることができないようです。以下は私のマングースモデルにあるものです。
バックエンドから修正を試みます
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
このモデルの新しいインスタンスをエクスプレスで作成すると、次のようにルックアップしapt.id
てIDを取得できますが、応答をクライアントに送信すると、があり_id
ますid
。
私が試した2番目の解決策は、計算されたプロパティを作成することでしたid
が、何らかの理由でemberはこれを好みません。ここには2つの問題があります。Emberは、呼び出されたid
、または少なくとももう使用されていない計算プロパティを尊重しません。これは私の残り火データモデルがどのように見えるかです。
フロントエンドから修正してみてください
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')
});
以下の私のテンプレートでは、IDに対して何もレンダリングされません。
{{#each apartment in controller}}
<li>{{apartment.body}} | {{apartment.date}} | {{apartment.href}} {{apartment.id}}</a> {{#linkTo 'apartment' apartment }} View {{/linkTo}} </li>
{{/each}}
ヘルパーはlinkTo
機能しますが、IDがあるべき場所にURLがnullになっています。これにより、戻るボタンが壊れ、データが複数回読み込まれます。以下は、いくつかのコンテキストでの私のルーターです。
App.Router.map(function(){
this.resource('apartments', function (){
this.resource('apartment', { path: ':apartment_id' } );
});
});
計算さid
れたプロパティの名前を次のようなものfoo
に変更してから、ルーターを次のように変更するとpath: ':apartment_foo'
、URLにオブジェクト参照を持つURLが生成されます#/apartments/<App.Apartment:ember357:null>
。
こういうもので、残り火について私を悩ませます。どんな助けでもいただければ幸いです。