2

ここからパッケージ化された ydn-db ライブラリを使用します: http://git.yathit.com/ydn-db/downloads/ydn.db-jquery-0.7.12.jshttps://storage.cloud.google.com/download.yathit.com/ydn-db/build/zsk-ydn.db-dev-0.7.15.js でも同じことが起こります。

var db = new ydn.db.Storage("mydb");
var clog = function(r) { console.log(r); }

db.put({name: "store1", keyPath: "id"}, {id: "id1", value: "value1"});
db.put({name: "store1", keyPath: "id"}, {id: "id2", value: "value2"});

db.get("store1", "id1").done(clog); // works fine

// Example as mentioned in the docs here: http://dev.yathit.com/ydn-db/getting-started.html
var reverse = false, limit = 10;
db.values(new ydn.db.Cursors("store1", "id", null, reverse), limit).done(clog)
// TypeError: Cannot call method 'getName' of null

// Also adapted from docs:
db.values(ydn.db.IndexValueCursors.where("store1", "id", "=", "id1")).done(clog)
// TypeError: Cannot call method 'getName' of null

// Also adapted from docs:
var iter = new ydn.db.ValueCursors("store1", ydn.db.KeyRange.starts("a"))
db.open(iter, clog, "readwrite")
// ydn.error.ArgumentException: Second argument must be cursor range iterator.

パッケージ化されたライブラリの機能は、ドキュメントと一致していないようです。任意のヒント?

4

2 に答える 2

1

実際、スキーマには index name がないidため、正しいコードは次のようになります。

var db = new ydn.db.Storage("mydb");
var clog = function(r) { console.log(r); }

db.put({name: "store1", keyPath: "id"}, {id: "id1", value: "value1"});
db.put({name: "store1", keyPath: "id"}, {id: "id2", value: "value2"});

db.get("store1", "id1").done(clog); // works fine


 // Example as mentioned in the docs here: http://dev.yathit.com/ydn-db/getting-started.html
var reverse = false, limit = 10;
db.values(new ydn.db.KeyCursors("store1", null, reverse), limit).done(clog)
// TypeError: Cannot call method 'getName' of null

// Also adapted from docs:
db.values(ydn.db.ValueCursors.where("store1",  "=", "id1")).done(clog)
// TypeError: Cannot call method 'getName' of null

// Also adapted from docs:
var iter = new ydn.db.ValueCursors("store1", ydn.db.KeyRange.starts("i"))
var pnt = function(r) {console.log(r.getValue())}
db.open(pnt, iter, "readwrite")

エラーメッセージは明らかに有益ではありません。パッチをプッシュしたので、次回は index not found エラーが発生します。

open メソッドにも api の変更があります。ドキュメントを更新する必要があります。

編集: より複雑なクエリはhttp://dev.yathit.com/ydn-db/nosql-query.htmlにあります。

于 2013-09-09T05:01:19.507 に答える
1

わかりました、最終的に前の回答のリンクから取得しました:

// Equivalent to: SELECT * FROM store1 where value = 'value1':
var keyRange = ydn.db.KeyRange.only("value1");
var cursor = new ydn.db.IndexValueCursors("store1", "value", keyRange);
db.get(cursor, keyRange).then(function(record) {
   console.log("record:", record);
}, function(err) {
   throw err;
});
于 2013-09-11T01:45:54.210 に答える