Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在javascript中构建映射/哈希映射_Javascript_Jquery_Arrays_Hashmap_Salesforce - Fatal编程技术网

尝试在javascript中构建映射/哈希映射

尝试在javascript中构建映射/哈希映射,javascript,jquery,arrays,hashmap,salesforce,Javascript,Jquery,Arrays,Hashmap,Salesforce,我正在尝试用javascript运行一个查询,并将结果传递给其他查询以获取更多数据。我还希望能够在一个表中显示所有数据,因此我试图将结果安排在javascript映射中,但我似乎遇到了问题 这是在salesforce.com内部使用AJAX工具包构建的 我的密码是 var cn = Query("select id, LastName, FirstName, Middle_Name__c, Gender__c, HomePhone, Birthdate, Birth_City__c," +

我正在尝试用javascript运行一个查询,并将结果传递给其他查询以获取更多数据。我还希望能够在一个表中显示所有数据,因此我试图将结果安排在javascript映射中,但我似乎遇到了问题

这是在salesforce.com内部使用AJAX工具包构建的

我的密码是

var cn = Query("select id, LastName, FirstName, Middle_Name__c, Gender__c, HomePhone, Birthdate, Birth_City__c," +
    "Birth_Country__c, SSN_Encrypted__c, Provider_NPI_ID__c, Primary_Specialty__c," +
    "Practicing_Specialty__c, Title, GlobalProviderID__c from contact where Name like " +
    "'%" + sBox + "%'");
var PFA;

for (var i = 0; i < cn.length; i++) {
    var x = new Array();
    var PFA = Query("select id, First_Scheduled_Date__c, Region__c " +
        "from Provider_Facility_Associations__c where Provider__c='" + cn[i].Id + "'");
    m['cn'] = cn[i];
    m['PFA'] = PFA;
    m[i] = x;
}

console.log(m['cn']);
var cn=Query(“选择id、姓氏、姓氏、中间名、性别、家庭电话、出生日期、出生城市,”+
“出生国、SSN加密国、提供者NPI ID国、初级专业国”+
“实践专业,头衔,全球提供联系人姓名”+
“%”+sBox+“%”);
var-PFA;
对于(变量i=0;i

任何帮助都将不胜感激。

从JS运行SQL通常是个坏主意,除非您使用的是某种SQL lite localstorage引擎。无论如何,我相信你的问题可能是你的m和x混淆了。另外,在for循环中运行查询,在第二个查询中使用
中的
,或者使用
连接
并只执行一个查询可能会更好。

您可以使用基本javascript对象作为映射

所以

将创建如下所示的对象:

map = {
  key1:"value1",
  key2:"value2"
}
当你把一个整数
i
传递给你的m对象时,它会试图把它当作一个数组而不是一个对象

不过,您还有更深层次的问题,因为您不应该从javascript运行SQL查询。这将允许任何人在访问您的网站时在您的数据库上运行任意查询。

请阅读Salesforce中的工作原理及其特定的“连接”,这些连接在开始时看起来很奇怪,但在类似的常见开发情况下,实际上可以多次节省您的时间

SELECT Id, FirstName, LastName,
    (SELECT Id, First_Scheduled_Date__c, Region__c 
    FROM Provider_Facility_Associations__r)
FROM contact 
WHERE Name LIKE '%Smith%'
(注意“子查询”中的“\uu\r”)

这将为您提供联系人,每个联系人都有一个名为Provider\u Facility\u Associations\u\r的“字段”,该字段将是一个项目数组(如果没有找到,则仅为空数组)

Salesforce安全模型不是万能的,您应该担心性能和安全性。人们不能使用它们来删除他们不应该删除的内容,但他们可以了解到你不打算公开的信息

最后但并非最不重要的一点——如果您有查询服务器端,并且只在那里传递变量(联系人姓名的一部分),那么这将执行得更好、更安全。这可以作为webservice公开,或者如果您使用的是Visualforce-action函数、JavaScript远程处理。。。有很多选择


我并不是说AJAX工具包是一个讨厌的东西。。。但它应该很少使用,如果有的话。这是所谓的“控制时代”的产物,随着Visualforce的引入(嗯……4年了?),它的许多用例可以更快、更安全地完成。

神圣的SQL注入蝙蝠侠!这对我今天来说已经足够了。它使用salesforce.com AJAX工具包,这不应该是一个问题。它使用salesforce.com AJAX工具包,所以就我所知,注入不应该是一个问题。我认为我的代码与您的示例非常接近,但这不起作用。您是对的,尝试利用queryMore;)这些关系的问题是有些是子对象,有些是引用对象。有些对象甚至不知道某个关系是否存在,因为子对象正在查找它。我仍然会在一次遍历和穷尽相关列表中执行此操作。将批处理大小设置为2000,如果这还不够-在子级上调用
queryMores
?(向下滚动一点)。如果因为rel而无法进行子查询。名称为空-作弊;)没有人阻止您在返回的联系人中创建新的“字段”,并将单独查询的结果插入其中。。。
SELECT Id, FirstName, LastName,
    (SELECT Id, First_Scheduled_Date__c, Region__c 
    FROM Provider_Facility_Associations__r)
FROM contact 
WHERE Name LIKE '%Smith%'