将Knockout.js与CouchDB一起使用-更改时更新

将Knockout.js与CouchDB一起使用-更改时更新,couchdb,knockout.js,Couchdb,Knockout.js,只是想知道订阅我的CouchDB数据存储的最佳方式,这样,如果coach中的文档被更新,KO视图也会自动更新。这有可能吗 下面是我到目前为止得到的,它只是从user_info文档中获取用户名 $.getJSON('http://localhost/couchdb/user_info', function(data) { var viewModel = ko.mapping.fromJS(data); ko.applyBindings(viewModel); }); 任何

只是想知道订阅我的CouchDB数据存储的最佳方式,这样,如果coach中的文档被更新,KO视图也会自动更新。这有可能吗

下面是我到目前为止得到的,它只是从user_info文档中获取用户名

$.getJSON('http://localhost/couchdb/user_info', function(data) {
    var viewModel = ko.mapping.fromJS(data);
    ko.applyBindings(viewModel);    
});

任何帮助都将不胜感激

CouchDB支持文档更改时的通知:更改

您可以使用
?since=X
参数轮询changes提要,以仅接收自X以来的更新

您还可以通过添加
&feed=longpoll
来“长轮询”提要。如果还没有更改,CouchDB将收到您的查询,但直到最后出现更改后才会回答

或者,您可以通过添加
&feed=continuous
来获得完整的COMET样式提要。这与longpoll类似,但是CouchDB永远不会关闭连接。每次发生更改时,它都会向您发送JSON,然后继续等待

最后,当数据库中发生任何更改时,您可以收到通知,或者您可以指定要在服务器上运行的Javascript筛选器(
&filter=designdoc/filtername
)。只有在过滤器批准的情况下,您才会收到通知。

您是否查看过它是否工作正常。我还在couchdb中运行hoodie作为os_守护进程服务


很好。

可以使用映射插件通过JSON更新viewmodel。在您的例子中,它将是getJson中的ko.mapping.fromJS(数据,this.ArrayOfModels)callback@Martijn,谢谢你,我已经更新了原来的帖子。尽管如此,这仍然不能完全解决问题,因为当用户信息文档被更新(由另一个用户或其他用户更新)时,viewModel对象没有得到更新(通过页面刷新除外),您想将数据从服务器推送到客户端吗?在windows平台上,我会使用setTimeOut定期检查新的更新。然而,一个非常有趣的项目是nowjs(),如果您有可能使用该平台,您可以编写:now.receiveMessage=function(data){ko.mapping.updateFromJS(viewmodel,data);}@Martijn,似乎我现在必须解决setTimeout问题,因为我们还没有迁移到基于linux的服务器。但是NowJS确实令人兴奋,因为我已经和NodeJS玩了一段时间了。谢谢你的帮助!谢谢你的建议,我对CouchDB方面的东西很满意(已经玩了一段时间了)。奇怪的是,我一直无法让连续提要正常工作,但我使用的是longpoll方法。我更多的是想了解一些关于淘汰方面的信息,看看当模型的源代码(CouchDB)发生变化时,模型是否可以自动更新。不过,我已经编写了手动执行此操作的代码。谢谢你的详细帖子!连续提要不起作用的最可能原因是,在服务器响应完成之前,您用来读取它的客户端库不会返回值-根据定义&feed=continuous永远不会完成。这一点很好,尽管我不是前端专家,我的理解是,处理部分响应的唯一方法是直接使用XMLHttpRequest。