如何使用jsforce模块在salesforce对象中添加customFields ..?使用元数据

时间:2016-01-23 07:53:28

标签: javascript node.js salesforce

// creating metadata
var metadata = {

  fullName: 'SampleObject__c', 
  label: 'Sample Object',
  label: 'Sample Object',
  pluralLabel: 'Sample Object',
  nameField: {
    type: 'Text',
    label: 'Sample Object'
  },
  deploymentStatus: 'Deployed',
  sharingModel: 'ReadWrite'
};

conn.metadata.create('CustomObject', metadata, function(err, results) {
  if (err) { 
    console.err(err); 
  }
  else{
    console.log('success ? : ' + result.success);
    console.log('fullName : ' + result.fullName);
  }

});

我无法在此处创建customField。仅创建了对象,并且没有可用于使用jsforce创建自定义字段的文档。我尝试过一种方法,即在成功创建自定义对象后,我已使用自定义字段更新元数据,但失败了。在customObject中创建customFields的方法是什么。

4 个答案:

答案 0 :(得分:3)

将字段数组添加到自定义对象元数据定义中。我也很难过。我通过在Salesforce setup-> create->对象中创建字段(点击管理员)然后阅读通过以下方式生成的元数据来解决这个问题:

conn.metadata.read(type, [fullName1, fullName2, ..], callback)     

将下面的对象数组放入元数据变量中,它应该可以工作。

fields: [ { fullName: 'A_Value__c',
           externalId: 'false',
                label: 'A Value 2',
           precision: '18',
            required: 'false',
               scale: '0',
       trackTrending: 'false',
                type: 'Number',
              unique: 'false' },
         {  fullName: 'A3_Value__c',
          externalId: 'false',
               label: 'A Value 3',
           precision: '18',
            required: 'false',
               scale: '0',
       trackTrending: 'false',
                type: 'Number',
              unique: 'false' } ],

答案 1 :(得分:0)

当我尝试创建CustomField

时收到以下错误
{
  "errors":
      {"message":"Must specify the name in the CustomObject.CustomField format (e.g. Account.MyNewCustomField), Name:SampleObject__c, Delimiter:.","statusCode":"FIELD_INTEGRITY_EXCEPTION"},
       "fullName":"SampleObject__c",
       "success":false
}

因此,传递以下元数据以为Lead对象创建自定义字段:

var metadata = {
  fullName: 'Lead.SampleField__c',
  length: 100, 
  type: 'Text',
  label: 'Sample Field'
};

connection.metadata.create('CustomField', metadata, function(err, result){});

答案 2 :(得分:0)

var conn = new jsforce.Connection({ accessToken: '{!$Api.Session_Id}' });
var metadata = {
    fullName: 'TestObject1__c.SampleField__c',
    length: '75', 
    type: 'Text',
    label: 'Sample Field'
};
connection.metadata.create('CustomField', metadata , function(err, result){
    if (err) { 
        console.error(err); 
    } else {
        console.log(result);
    }

});

但请确保您已经创建了Test_Object自定义对象。您也可以同时创建自定义对象和自定义字段。我试过了,工作正常。并创建自定义对象,如下所示:

var conn = new jsforce.Connection({ accessToken: '{!$Api.Session_Id}' });
var metadata = [{
    fullName: 'TestObject1__c',
    label: 'Test Object 1',
    pluralLabel: 'Test Object 1',
    nameField: {
        type: 'Text',
        label: 'Test Object Name'
    },
    deploymentStatus: 'Deployed',
    sharingModel: 'ReadWrite'
}];

    conn.metadata.create('CustomObject', metadata, function(err, results) {
        if (err) { 
            console.error(err); 
        }

        for (var i=0; i < results.length; i++) {
            var result = results[i];
            console.log('success ? : ' + result.success);
            console.log('fullName : ' + result.fullName);
        }
    });

答案 3 :(得分:0)

我有简单的解决方案。就这样做:

var conn = new jsforce.Connection({ accessToken: '{!$Api.Session_Id}' });

    var metadata = [{
        fullName: 'TestObject1__c',
        label: 'Test Object 1',
        pluralLabel: 'Test Object 1',
        nameField: {
            type: 'Text',
            label: 'Test Object Name'
        },
        filds : {
           "fullName": "devcqe7__Org_test__c",
            "description": "This field records division for training session.",
            "externalId": "false",
            "label": "Org. Division",
            "required": "false",
            "trackTrending": "false",
            "type": "Picklist",
            "valueSet": {
                "restricted": "true",
                "valueSetName": "devcqe7__SQX_Division"
            }
        },
        deploymentStatus: 'Deployed',
        sharingModel: 'ReadWrite'
    }];

    conn.metadata.upsert('CustomObject', metadata, function(err, results) {
        if (err) { 
            console.err(err); 
        }

        for (var i=0; i < results.length; i++) {
            var result = results[i];
            console.log('success ? : ' + result.success);
            console.log('fullName : ' + result.fullName);
        }
    });