繁体   English   中英

将JavaScript websql转换为Clojurescript

[英]Converting JavaScript websql to Clojurescript

我正在看下面的教程

https://developer.apple.com/library/iad/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/使用JavascriptDatabase /使用JavascriptDatabase.html

并在dataHandler函数中将js转换为cljs时遇到麻烦

function dataHandler(transaction, results)
{
// Handle the results
var string = "Green shirt list contains the following people:\n\n";
for (var i=0; i<results.rows.length; i++) {
    // Each row is a standard JavaScript array indexed by
    // column names.
    var row = results.rows.item(i);
    string = string + row['name'] + " (ID "+row['id']+")\n";
}
alert(string);
}

这是我的cljs代码

 (defn success-handler [tx, results]
   (println "success handler")
   (println results)

   ;;the below doesn't work, I get an error here  
   ;;:Uncaught Error: [object SQLResultSet] is not ISeqable

  (doseq [result results]
  (prn result)))

所以我的问题是如何将js dataHandler转换为cljs成功处理程序?

尝试将结果的行变成一个序列,而不是整个结果。

(defn success-handler [tx, results]
   (println "success handler")
   (println results)

  (doseq [result (.-rows results)]
    (prn result)))

如果行未实现Iterable,则以老式方式进行

(defn success-handler [tx, results]
   (println "success handler")
   (println results)

  (let [rows (.-rows results)]
   (doall
    (for [i (range (.-length rows))]
      (let [row (nth rows i)]
        (prn result))))))

解决方法如下:

(defn success-handler [tx, results]
  (let [rows (.-rows results)]
    (doseq [i (range (.-length rows))]
      (prn (.item rows i)))))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM