Javascript 需要查看当前用户是否与创建正在编辑的记录的用户相同

Javascript 需要查看当前用户是否与创建正在编辑的记录的用户相同,javascript,sharepoint-2013,Javascript,Sharepoint 2013,我在SharePoint中有一个请求流程(自定义列表),需要实现一些业务规则。第一条规则是只有当前用户才能与一些管理员一起编辑记录。使用OOB“创建和编辑访问权限””的问题在于,当用户编辑的记录不是他们的记录时,SharePoint不会向他们发出警告,直到他们尝试保存。现在告诉用户这个消息已经太迟了,所以我需要加强我自己的安全性,这样用户就不允许编辑 获取当前用户的我的代码: function SetCurrentUsernameToPeoplePicker() { var ctx = ne

我在SharePoint中有一个请求流程(自定义列表),需要实现一些业务规则。第一条规则是只有当前用户才能与一些管理员一起编辑记录。使用OOB“创建和编辑访问权限””的问题在于,当用户编辑的记录不是他们的记录时,SharePoint不会向他们发出警告,直到他们尝试保存。现在告诉用户这个消息已经太迟了,所以我需要加强我自己的安全性,这样用户就不允许编辑

获取当前用户的我的代码:

function SetCurrentUsernameToPeoplePicker()
{
  var ctx = new SP.ClientContext.get_current();
  this.website = ctx.get_web();
  this.currentUser = website.get_currentUser();
  ctx.load(currentUser);
  ctx.executeQueryAsync(Function.createDelegate(this, this.defaultUserSuccess), 
  Function.createDelegate(this, this. defaultUserFail));
}

function defaultUserSuccess (sender, args)
{
  var loginName = currentUser.get_loginName();
  console.log('login='+loginName );
}
我不知道如何从屏幕上的请求者姓名选取器中获取用户,所以我尝试使用CAMEL查询来获取它。我有对象,但无法比较登录名。我有以下代码:

 function retrieveListItems() {
    var clientContext = new SP.ClientContext.get_current();
    var oList = clientContext.get_web().get_lists().getByTitle('BSMRequests');
    var recordId = "14";
    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'ID\'/><Value Type=\'Text\'>'+ recordId +'</Value></Eq></Where></Query></View>'); 
    collListItem = oList.getItems(camlQuery);
    clientContext.load(collListItem);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded),
                                                           Function.createDelegate(this, this.onQueryFailed));
  }

  function onQuerySucceeded(sender, args) {
    var listItemEnumerator = collListItem.getEnumerator();
    while (listItemEnumerator.moveNext()) {
      var oListItem = listItemEnumerator.get_current();
    console.log('requestor='+oListItem.get_item('Requestor_x0020_Name'));
    }
  }
函数retrieveListItems(){
var clientContext=new SP.clientContext.get_current();
var oList=clientContext.get_web().get_list().getByTitle('BSMRequests');
var recordId=“14”;
var camlQuery=new SP.camlQuery();
camlQuery.set_viewXml(“”+recordId+“”);
collListItem=oList.getItems(camlQuery);
加载(collListItem);
clientContext.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceed),
Function.createDelegate(this,this.onQueryFailed));
}
函数onquerysucceed(发送方,参数){
var listItemEnumerator=collListItem.getEnumerator();
while(listItemEnumerator.moveNext()){
var oListItem=listItemEnumerator.get_current();
log('requestor='+oListItem.get_item('requestor_x0020_Name'));
}
}

我需要一种方法来获取此记录的Requestor Name字段的登录名,或者另一种方法来比较当前用户与创建此记录的用户的登录名。有什么建议吗?

如果我理解正确,请求者名称是一个用户字段

jsom返回oListItem.get_item('requestorx0020_Name')作为SP.FieldUserValue对象,您可以通过
oListItem.get_item('requestorx0020_Name').get_lookupId()
或通过
oListItem.get_item('requestorx0020_Name').get_lookupValue()
获取用户名

对于这种情况,我认为您可以比较用户id