从 SCA SuiteScript 中访问客户 Table
Access Customer Table from within SCA SuiteScript
当用户在我们的 SCA Mont Blanc 网站上注册时,我们需要在创建用户之前检查他们的电子邮件是否唯一。因此,我们编辑了 Accounts@1.X.X/SuiteScript/Account.Model.js
文件,以在注册新用户之前检查具有特定电子邮件地址的任何用户的 Customer
table。
问题是: 脚本在 Customer Center
角色下执行,它没有 view/query Customer
table。所以我们的检查使脚本崩溃。
我们如何在用户注册后访问 Customer
table(特别是文件 Accounts@1.X.X/SuiteScript/Account.Model.js
)?有没有什么 solution/advice 你可以提供,因为我很困惑:(
我尝试过的东西:
- 更改服务文件
services/Account.Register.Service.ss
的 role/permissions 以在我创建的名为 Webstore User
的新角色下执行。不幸的是,这导致登录页面显示错误; You do not have permission to view this page
。也许我没有更改正确的文件或正确设置新角色?
- 创建了一个新角色,该角色具有
Customer Centre
的所有权限加上 Customers
的 view
权限。但是和上面一样的错误。
AccountOverrides@1.0.0/SuiteScript/Account.Model.js
...
return SCModel.extend({
name: 'Account'
, register: function (user_data)
{
// Check if there is already a user/customer with this email address
// The below function will crash the script because
// the script cannot access the 'customer' table
var emailDulicates = nlapiSearchRecord('customer', null,
new nlobjSearchFilter('email', null, 'is', ''+user_data.email));
if (emailDulicates && emailDulicates.length > 0) {
Application.sendError({"Email already taken."});
return false;
}
... continue on to register user
}
});
我所做的是创建一个伴随的 .ss 文件并赋予它权限。然后你用 nlapiRequestURL 调用它并取回数据。这比 suitelet 更方便一些,因为您将所有文件放在一起并且有一个更简单的 URL 来处理
您可以使用 nlapiRequestURL 调用此服务器端。来自您的 SuiteScript/Account/Model.js 或来自 services/Account.Register.Service.ss
您也可以将其称为客户端,以便在注册前验证电子邮件。在获得干净的电子邮件评估之前,您将禁用“注册”按钮。
当用户在我们的 SCA Mont Blanc 网站上注册时,我们需要在创建用户之前检查他们的电子邮件是否唯一。因此,我们编辑了 Accounts@1.X.X/SuiteScript/Account.Model.js
文件,以在注册新用户之前检查具有特定电子邮件地址的任何用户的 Customer
table。
问题是: 脚本在 Customer Center
角色下执行,它没有 view/query Customer
table。所以我们的检查使脚本崩溃。
我们如何在用户注册后访问 Customer
table(特别是文件 Accounts@1.X.X/SuiteScript/Account.Model.js
)?有没有什么 solution/advice 你可以提供,因为我很困惑:(
我尝试过的东西:
- 更改服务文件
services/Account.Register.Service.ss
的 role/permissions 以在我创建的名为Webstore User
的新角色下执行。不幸的是,这导致登录页面显示错误;You do not have permission to view this page
。也许我没有更改正确的文件或正确设置新角色? - 创建了一个新角色,该角色具有
Customer Centre
的所有权限加上Customers
的view
权限。但是和上面一样的错误。
AccountOverrides@1.0.0/SuiteScript/Account.Model.js
...
return SCModel.extend({
name: 'Account'
, register: function (user_data)
{
// Check if there is already a user/customer with this email address
// The below function will crash the script because
// the script cannot access the 'customer' table
var emailDulicates = nlapiSearchRecord('customer', null,
new nlobjSearchFilter('email', null, 'is', ''+user_data.email));
if (emailDulicates && emailDulicates.length > 0) {
Application.sendError({"Email already taken."});
return false;
}
... continue on to register user
}
});
我所做的是创建一个伴随的 .ss 文件并赋予它权限。然后你用 nlapiRequestURL 调用它并取回数据。这比 suitelet 更方便一些,因为您将所有文件放在一起并且有一个更简单的 URL 来处理
您可以使用 nlapiRequestURL 调用此服务器端。来自您的 SuiteScript/Account/Model.js 或来自 services/Account.Register.Service.ss
您也可以将其称为客户端,以便在注册前验证电子邮件。在获得干净的电子邮件评估之前,您将禁用“注册”按钮。