如何在节点红色上下文中存储数组

时间:2017-08-07 12:09:43

标签: javascript node-red

我正在尝试在Node Red上下文(或流)对象中存储并获取数组。

我这样做存储,可以看到带数组的输出消息:

manager.request(routeUrl, method: .get).responseJSON { (responseObject) -> Void in

        if responseObject.result.isSuccess {
            let resJson = JSON(responseObject.result.value!)
            let categoryList = NSMutableArray()
            for (_,subJson):(String, JSON) in resJson {

                let model = CategoryModel(JsonDashBoard: subJson)
                categoryList.add(model)
                //Do something you want
                print(subJson)

            }
            let categoryListModel = CategoryListModel(_items: categoryList)
            success(categoryListModel)


        }
        if responseObject.result.isFailure {
            let error : Error = responseObject.result.error!
            failure(error)
        }


    }

此节点从上下文中获取数组:

var acstate=[];
for(var i=0;i<15;i++){
     acstate[i]=1;
    }
context.set("acstate",acstate);
msg={'payload':acstate};
return msg;

显示

var acstate=[];
acstate = context.get('acstate');
for(var i=0;i<15;i++){
     node.warn(acstate[i]);
    }
msg={'payload':acstate};
return msg;

无法找到有关存储数组的信息,是否可以使用上下文?如果没有,我可以用什么来保存数据?

谢谢!

3 个答案:

答案 0 :(得分:0)

你可以这样写

var acstate=[];
var temp = context.get('acstate');

for(var x=0;x<temp.length;x++){
     acstate.push(temp[x]);
    }

for(var i=0;i<15;i++){
     node.warn(acstate[i]);
    }
msg={'payload':acstate};
return msg;

答案 1 :(得分:0)

在将数组分配给另一个函数的返回之前,您不需要创建数组:

    var acstate; /* =[] NOT REQUIRED; */
    acstate = context.get('acstate');

    if ( typeof acstate == "object" 
    && typeof acstate.length == "number"
    && acstate.length > 0 ) {
        for(var i=0;i<acstate.length; i++){
           node.warn(acstate[i]);
        }
    }
    msg={'payload':acstate};
    return msg;

答案 2 :(得分:0)

抱歉,我没有提到我正在尝试写入上下文并从不同节点的上下文中读取。看起来每个节点都有它自己的上下文,这就是为什么存储在一个节点的上下文中的数据在另一个节点的上下文中不可用的原因。所以现在我试着改变&#34; context&#34;到&#34;流动&#34;它的工作原理!

var temp = flow.get('acstate');

感谢您的回答!