我已经看到过这个问题,但我仍然对将 Mongo 处理_id
成id
. 我使用 mongoose 作为我的 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
当我在 express 中创建此模型的新实例时,我可以进行查找apt.id
并取回 id,但是当我将响应发送给客户端时,我只是有_id
和没有id
。
我尝试的第二个解决方案是创建一个计算属性,id
但无论出于何种原因,ember 都不喜欢这样。这里有2个问题。Ember 不尊重被称为id
或至少不再尊重的计算属性。这就是我的 ember-data 模型的样子。
尝试从前端修复它
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
但 url 在 id 应该是 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>
.
正是这样的东西让我对 ember 感到不安。任何帮助,将不胜感激。