Backbone-couchdb连接器错误:url属性或函数必须指定
Backbone-couchdb connector error: url property or function must be specified
我刚开始使用一个简单的'counter'应用程序来使用backbone.js和couchdb。使用本地存储的版本可以在这里找到:demo fiddle。它是一个简单的应用程序,显示一个可以递增和递减的计数器。计数器的值存储在数据库中。在参考的版本中,我使用localstorage,这似乎工作得很好。
当我将示例转换为使用couchdb时,问题出现了。因此,我创建了一个couchapp,并对代码进行了调整,使其与主干couchdb连接器一起工作。我还包括了db配置属性(如这里提到的)。代码的相关(改编)部分如下所示(它只是归结为包含url属性)。
var Counter = Backbone.Model.extend({
defaults: {
countervalue: 0
},
initialize: function() {
_.bindAll(this);
},
increment: function() {
this.save({countervalue: this.get('countervalue') + 1});
},
decrement: function() {
this.save({countervalue: this.get('countervalue') - 1});
}
});
var Counters = Backbone.Collection.extend({
model: Counter,
url : "counters",
initialize: function() {
this.fetch();
}
});
然而,每当我增加或减少计数器时,就会出现以下错误:"必须指定一个"url"属性或函数"。从文档中,我了解到模型从包含它的集合中获取它的url。这似乎不是事实吗?我做错了什么?
也许应用程序的另一个相关部分是我实例化Counter模型的地方(也可以在演示小提琴中看到);AppView的initialize方法:
initialize: function() {
var currentCounter;
if (theCounters.size() > 0) currentCounter = theCounters.last();
else {
currentCounter = new Counter();
theCounters.push(currentCounter);
}
this.counterview = new CounterView({
model: currentCounter
});
}
我没有一起使用过CouchDB和Backbone.js,但我猜解决方法与本解释相同。
当使用localStorage
适配器时,您必须在集合上提供一个localStorage
属性,并且这是您键入url的唯一位置(实际上是集合的根属性)。但是,当不使用此适配器并尝试同步模型时,该模型需要URL,因为现在Collection没有URL。当向集合提供URL属性时,您是对的,但是这是在同步整个集合时使用的,而不是在同步单个模型时使用的。
为了使它工作,你可以为模型提供一个URL(记住它可以是一个函数而不仅仅是一个字符串),或者你可以使用urlRoot
属性,而urlRoot
是我们所理解的"集合的URL"(在那里它将追加其id
)。如果urlRoot
是/counters
,你有一个id
是1
的模型,那么最终的URL(它为你做的)将是/counters/1
,例如。
你可以检查这个问题,如果你没有,即使它不是关于CouchDB,但它可能会对这个问题有一些启发:我如何在Backbone中获取单个模型?
- 从嵌套函数访问函数属性
- Javascript嵌套函数属性继承
- Javascript-在全局作用域中调用本地函数/属性
- 正在重置原型对象的构造函数属性
- javascript函数属性设置器中的延迟
- jQuery插件返回this.each并为每个对象添加函数属性
- 从函数属性访问对象属性;不适用于Firefox
- 当使用“”创建时保留函数属性;绑定”;
- 在多个(html)元素上循环执行相同的JavaScript函数属性更改
- 如何将新的构造函数属性推送到数组
- 通过构造函数属性和运算符实例设置继承
- 角度表达式无法使用构造函数属性分辨变量类型
- 为什么要在函数定义之外引用静态变量(函数属性)
- Javascript“构造函数”属性中的错误 - IE 8
- 为什么浏览器支持对象的隐式函数属性
- 构造函数属性值应该是什么 .a 原型构造函数或对象构造函数本身
- 使用模块模式调用函数属性
- React 组件流类型检查中的可选函数属性失败
- 是否可以在 javascript 中的对象文字上定义函数属性
- JavaScript:如何捕获对象的任何缺失函数/属性