Vala 和 Desktopcouch 准备好了吗?

Vala 和 Desktopcouch 准备好了吗?

我已经开始用 Vala 编写 RSS 阅读器,但我不知道应该使用什么数据库系统,我无法连接到 CouchDB,而 SQLite 工作正常,但我想使用 CouchDB,因为有 ubuntu 版本。我已安装最新更新

public CouchDB.Session session;
    public CouchDB.Database db;
    public string feed_table = "feed";
    public string item_table = "item";
    public struct field {
        string name;
        string val;
    }

    // constructor
    public Database() {
    try {
    this.session = new CouchDB.Session();
     } catch (Error e) {
           stderr.printf ("%s a\n", e.message);
        }

    try {

         this.db = new CouchDB.Database (this.session, "test");
         } catch (Error e) {
           stderr.printf ("%s a\n", e.message);
        }

        try {
        this.session.get_database_info("test");
        } catch (Error e) {
           stderr.printf ("%s aa\n", e.message);
        }

         try {
          var newdoc = new CouchDB.Document ();
        newdoc.set_boolean_field ("awesome", true);
        newdoc.set_string_field ("phone", "555-VALA");
        newdoc.set_double_field ("pi", 3.14159);
        newdoc.set_int_field ("meaning_of_life", 42);
        this.db.put_document (newdoc);    // store document
        } catch (Error e) {
        stderr.printf ("%s aaa\n", e.message);
        } 

报告

$ ./xml_parser rss.xmlCannot connect to destination (127.0.0.1) aa
Cannot connect to destination (127.0.0.1) aaa

答案1

从性能角度来看,我只想说,与 SQLite 等更成熟的解决方案相比,CouchDB 可能不是最快的解决方案。gwibber 比较将 SQLite 列为只是 速度快 10 倍

鉴于 RSS 阅读器的功能远不止SELECT于此INSERT,您需要意识到这一点,因为它会影响应用程序的响应能力。


就您的代码而言,将其与“官方” Vala+Couch 示例,你没有传递连接详细信息,所以我想知道自动检测机制是否存在问题。Couch 每次运行时都会在不同的端口上启动,但你可以通过 dbus 获取其当前端口

dbus-send --session --print-reply --dest=org.desktopcouch.CouchDB / org.desktopcouch.CouchDB.getPortmethod return sender=:1.231 -> dest=:1.230 reply_serial=2

我不知道 Vala 的做法,但手动查找可能会帮助您完成初始连接。

相关内容