Meteor aldeed collections2 使用 for 循环将数据更新为对象数组

Meteor aldeed collections2 update data to array of objects using for loop

您好,我有一个问题。我想使用 for 循环

将数据插入对象数组
fields:{
        type:[Object],
        label:"Fields",
        optional:true
    },
    "fields.$.category":{
        type:String,
        label: "Category"
    },
    "fields.$.sub":{
        type:String,
        label:"Sub Category",
    },

并在我试过的服务器中使用 savaData.js

// ServiceProviders.update({
                    //  '_id':"GmkGSXjyNFshomdCu"}, 
                    //  {
                    //      '$set': {'fields':{
                    //              '$.category':categorydata,
                    //              '$.sub':subdata
                    //      }}
                    //  },function(error,result){console.log(error);console.log(x+y);});

ServiceProviders.update(
{'_id': 'JN4mRPfJZqBadZtPY' },
    {'$set': {'fields.0.category': categorydata,'fields.0.sub':subdata}},
     true );

然后

 var x = "fields."+i+".category";
                    var y = "fields."+i+".sub";
                    x=x.toString();
                    y=y.toString();
    ServiceProviders.update( 
    {'_id': 'JN4mRPfJZqBadZtPY' },
    {'$set': {x: categorydata,y:subdata}},
     true );

我每次都遇到不同的错误,你能帮我解决这个问题吗

目前,$ 不适用于 Meteor js。 所以你必须在服务器端或客户端创建一个字段对象:

var fieldsData = []
for (var i = 0; i < categorydata.length || i < subdata.length ; i++ ){
    fieldsData.push({
       category : ( categorydata[i] ? categorydata[i] : '' ),
       sub : ( subdata[i] ? subdata[i] : '' )
    })
}

ServiceProviders.update( 
    {'_id': 'JN4mRPfJZqBadZtPY' },
    {'$set': {fields : fieldsData}},
     true );

请确保每个字段数据都有 cat 和 subcat 值,或者使 cat 和 subcat cat 可选为 true。