【发布时间】:2014-11-26 07:25:46
【问题描述】:
我对 ember 很陌生。我有一个带有 CRUD 页面的基本 ember 应用程序。在使用 mongoDB 向节点 API 发出 PUT 请求后,我无法刷新 CRUD 页面的视图/模板。
当我删除模型时,页面刷新正常,但在我 PUT 时却没有。如果我刷新页面,一切都很好并且可以正常工作,但是我希望在单击“批准”按钮后立即刷新视图。
有人能指出我应该如何在 Ember 中处理这个问题的正确方向吗?还是我没有从我的 API 正确返回某些东西,而 Ember 正在做它应该做的事情?
谢谢
节点 API PUT:
router.put( '/:id', function( req, res ) {
return Picture.findById( req.params.id, function( err, picture ) {
picture.status = req.body.picture.status;
picture.url = req.body.picture.url;
//...and so on
return picture.save( function( err ) {
if( !err ) { return res.send( picture ); }
return res.send('ERROR');
});
});
});
型号:
App.Picture = DS.Model.extend
authorName: DS.attr('string')
pictureName: DS.attr('string')
url: DS.attr('string')
tags: DS.attr('string')
status: DS.attr('string')
路线:
App.AdminRoute = Ember.Route.extend
model: ->
return @store.find 'picture'
actions:
delete: (picture) ->
picture.destroyRecord() # view updates fine
approve: (picture) ->
picture.set('status', 'verified')
picture.save()
注意 - 我的控制台中也出现了这个我不了解的错误 - 我不记得总是收到它,所以我不确定它有多少相关性。
Error: No model was found for 'v'
at new Error (native)
at Error.r (http://localhost:3000/javascripts/libs/ember-1.7.0.js:4:992)
at Ember.Object.extend.modelFor (http://localhost:3000/javascripts/libs/ember-data.js:3:4754)
at t.default.i.extend.extractSingle (http://localhost:3000/javascripts/libs/ember-data.js:1:23642)
at y (http://localhost:3000/javascripts/libs/ember-1.7.0.js:4:30411)
at r [as extractSingle] (http://localhost:3000/javascripts/libs/ember-1.7.0.js:4:28863)
at e.default.Ember.Object.extend.extractSave (http://localhost:3000/javascripts/libs/ember-data.js:1:22390)
at e.default.Ember.Object.extend.extractUpdateRecord (http://localhost:3000/javascripts/libs/ember-data.js:1:22097)
at e.default.Ember.Object.extend.extract (http://localhost:3000/javascripts/libs/ember-data.js:1:21661)
at http://localhost:3000/javascripts/libs/ember-data.js:3:9807
【问题讨论】:
-
对
PUT的响应的有效负载是什么样的? -
使用 Chrome 调试器并查看网络部分。单击有问题的请求,然后单击“响应”选项卡。您应该会看到 Ember 尝试解析的 JSON 响应。我的猜测是它包含一个以
v开头的元素(可能是根):) -
太棒了,感谢史蒂夫的解释!不过,看起来返回的 JSON 还是不错的。我更改的属性是“状态”从未验证到验证:{“_id”:“5428abf33e733af2fc0007ff”,“作者姓名”:“本”,“图片名称”:“骄傲的鸡”,“状态”:“验证”,“标签” :null,"url":"benrlodge.github.io/isotopeSearchFilter/img/four.jpg"}
标签: node.js mongodb ember.js express coffeescript