通过Waterline将新文档添加到字段类型Json中

时间:2015-04-27 10:06:15

标签: node.js sails.js waterline sails-orientdb

我正在尝试添加新文档,或者您可以将新的键值对称为现有的json类型字段,但它正在替换旧的键值对,例如 在我的嵌入字段{"@type":"d","key1":"example1"}之前 当我执行更新调用时

WL_MODELS.numbers.update({id: req.body.SID},{numbers: {"key2":"example2"}},function(err,model){ if(err) console.log(err); else {  console.log(model);}} ); 

它取代numbers: {"@type":"d","key2":"example2"}的值 但我想在现有的嵌入式或json文档中添加新的键值对,如果我的方法错了,那么告诉我如何使用waterline和sails-orientdb?

1 个答案:

答案 0 :(得分:1)

xeeB,在水线json中的数据类型与integerstring类似,与您无法对其执行嵌套操作的数据类型相似。换句话说,执行.update(criteria, { attribute: json })将替换您正在经历的整个json对象。

要实现你想要的,你首先需要在更改之前获取json,例如:

WL_MODELS.numbers.findOne({id: req.body.SID}, function(err, model){
  model.numbers["key2"] = "example2";
  model.save(function(err){
    console.log("saved:", model);
  });
});

如果这不起作用,请告诉我。