4

传递 json 文档进行创建的正确方法是什么?

我的示例工作正常,如下所示:/* 在集合中创建一个新文档 */

db.document.create({a:"test"},function(err,ret){
if(err) console.log("error(%s): ", err,ret);
else console.log(util.inspect(ret));
});

但是我如何将 json 作为参数传递,因为这不起作用?

var json = '{a:"test"}';

db.document.create(json,function(err,ret){
if(err) console.log("error(%s): ", err,ret);
else console.log(util.inspect(ret));

});

4

2 回答 2

4

查看上面 Kaerus 存储库中的“创建”函数,创建函数是:

"create": function() {
  var collection = db.name, data = {}, options = "", callback, i = 0;
  if(typeof arguments[i] === "boolean"){ 
    if(arguments[i++] === true)
      options = "&createCollection=true";
  } 
  if(typeof arguments[i] === "string") collection = arguments[i++];
  if(typeof arguments[i] === "object") data = arguments[i++];
  if(typeof arguments[i] === "function") callback = arguments[i++];
  return X.post(xpath+collection+options,data,callback);
},

因此,您要么需要将其作为 JavaScript 对象传递,即调用

JSON.parse('{"a":"test"}')

将 JSON 表示转换为 JavaScript 对象或修补 Kaerus 客户端以允许行中的对象或字符串

if(typeof arguments[i] === "object") data = arguments[i++];

(这可能会导致可选参数出现问题)。

注意:无论如何,重要的是“json”包含有效的 JSON 表示。

{ a: "Test" }

无效,

{ "a": "Test" }

是。

于 2013-04-01T20:19:25.070 回答
2

看看这个单元测试:https ://github.com/kaerus/arango-client/blob/master/test/api/document.js

尝试

 var json = {"a":"test"};
于 2013-04-01T18:24:51.160 回答