ฉันเพิ่งเริ่มทำงานกับ backbone.js และ couchdb โดยใช้แอปพลิเคชัน 'ตัวนับ' ง่ายๆ เพื่อเรียนรู้หลักการทำงาน คุณสามารถดูเวอร์ชันที่ใช้ Localstorage ได้ที่นี่: demo fiddle เป็นแอปพลิเคชั่นง่ายๆ ที่แสดงตัวนับที่สามารถเพิ่มและลดค่าได้ ค่าของตัวนับจะถูกเก็บไว้ในฐานข้อมูล ในเวอร์ชันอ้างอิง ฉันใช้ localstorage ซึ่งดูเหมือนว่าจะทำงานได้ดี
ปัญหาเกิดขึ้นเมื่อฉันแปลงตัวอย่างไปใช้ couchdb ดังนั้นฉันจึงสร้าง couchapp และปรับโค้ดให้ทำงานกับ ตัวเชื่อมต่อ backbone-couchdb ฉันยังรวมแอตทริบิวต์ db config ด้วย (ตามที่กล่าวไว้ ที่นี่ ). ส่วนที่เกี่ยวข้อง (ดัดแปลง) ของโค้ดอยู่ด้านล่าง (ซึ่งเพิ่งสรุปรวมแอตทริบิวต์ 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: function() {
var currentCounter;
if (theCounters.size() > 0) currentCounter = theCounters.last();
else {
currentCounter = new Counter();
theCounters.push(currentCounter);
}
this.counterview = new CounterView({
model: currentCounter
});
}