灰烬&猫鼬:“断言失败:没有找到'__v'的模型”

时间:2013-11-27 03:07:50

标签: javascript node.js ember.js mongoose

我有一个基本的Ember应用程序来创建和编辑博客帖子,我正在使用Ember,Ember-Data和Mongoose。我无法弄清楚原因,但每当我为帖子提交修改时,它都会在Chrome控制台中记录以下错误:

Assertion failed: No model was found for '__v'

对于那些不熟悉Mongoose的人,它会自动将__v添加到您的文档中进行版本控制。我试图通过normalizeHash删除它,并且Ember Inspector显示它不在浏览器中的数据中,但错误仍然神奇地出现:

App.ApplicationSerializer = DS.RESTSerializer.extend({
  primaryKey: "_id",

  normalizeHash: {
    posts: function(hash) {
        console.log("That's a hash");
        delete hash.__v;
        return hash;
    }
  }
});

我也试图作弊,只是将__v添加到我的模型中以便在那里处理,但我仍然得到同样的错误:

App.Post = DS.Model.extend({
    title:          DS.attr(),
    post_content:   DS.attr(),
    tags:           DS.attr(),
    creationDate:   DS.attr(),
    author:         DS.attr(),
    complete:       DS.attr(),
    __v:            DS.attr()
});

数据仍然保留在服务器上,因此服务器对正在发生的事情没有任何问题。它本来只是一个恼人的错误消息,似乎没有任何负面后果,但当我试图添加一个didUpdate监听器留在页面上,直到我得到成功事件,它不会执行回调。

post.one('didUpdate', this, function() {
    // redirects to post itself
    this.transitionToRoute('post', post);
});

关于如何正确处理__v的任何想法?如果我无法击败它,我只是要告诉Mongoose停止创建它们,但我宁愿在文档中保留版本。

0 个答案:

没有答案