首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jsforce按SalesForce Date对象查询失败

使用jsforce按SalesForce Date对象查询失败
EN

Stack Overflow用户
提问于 2021-03-25 06:47:02
回答 1查看 271关注 0票数 0

我使用jsforce find-api来搜索一个由道布创建的帐户,这是一个Date类型的字段。

对API的调用如下所示:

代码语言:javascript
复制
const conn = await connection();
result = await conn.sobject(this.schema.Name).find(rawSObject, Object.keys(this.schema.Fields));

其中rawSObject如下所示:

尝试1

代码语言:javascript
复制
const rawSObject = { [AccountFields.PersonBirthdate]: moment(birthDate, 'MM/DD/YYYY').format('YYYY-MM-DD') };

但失败的原因是:

代码语言:javascript
复制
INVALID_FIELD: 
 PersonBirthdate = '1985-12-12'
                                      ^
ERROR at Row:1:Column:985
value of filter criterion for field 'PersonBirthdate' must be of type date and should not be enclosed in quotes

尝试2

代码语言:javascript
复制
const rawSObject = { [AccountFields.PersonBirthdate]: moment(birthDate, 'MM/DD/YYYY').toISOString();

但是仍然得到相同的错误。

尝试3次

我还尝试传递一个date对象:

代码语言:javascript
复制
const rawSObject = { [AccountFields.PersonBirthdate]: moment(birthDate, 'MM/DD/YYYY').toDate()

这一次我得到了一个不同的错误:

代码语言:javascript
复制
MALFORMED_QUERY: 
PersonBirthdate = Thu Dec 12 1985 00:00:00 GMT+0200
                               ^
ERROR at Row:1:Column:1002
Bind variables only allowed in Apex code
    at HttpApi.getError (/Users/nalfasi/dev/salesforce-gateway/node_modules/jsforce/lib/http-api.js:250:13)...

尝试4

在网上搜索的时候,我也遇到了下面的帖子:https://github.com/jsforce/jsforce/issues/851,并尝试了那里的建议,特别是评论中的那个:https://github.com/jsforce/jsforce/issues/851#issuecomment-594233217

代码语言:javascript
复制
rawSObject = { [AccountFields.PersonBirthdate]: { $eq: SfDate.toDateTimeLiteral(birthDateObj) };

现在我得到了一个新的错误:

代码语言:javascript
复制
INVALID_FIELD: 
 PersonBirthdate = 1985-12-11T22:00:00Z
                                      ^
ERROR at Row:1:Column:985
value of filter criterion for field 'PersonBirthdate' must be of type date and should not be enclosed in quotes
    at HttpApi.getError (/Users/nalfasi/dev/salesforce-gateway/node_modules/jsforce/lib/http-api.js:250:13)

进一步

我还在网上搜索了一下,发现像这样的问题:Cannot Update Custom Date field via SalesForce API (JSforce)

jsforce query method chain to find data between 2 dates

https://salesforce.stackexchange.com/questions/22851/trouble-using-soql-to-filter-results-by-a-range-of-dates-what-is-the-correct-s

https://salesforce.stackexchange.com/questions/8896/using-a-date-for-a-datetime-field-in-a-soql-query

但他们也帮不上忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-25 06:47:02

错误在于将DateTime视为Date对象,并且在jsforce文档中缺少示例。

最后我终于弄明白了:

代码语言:javascript
复制
const birthDateObj = moment(birthDate, 'MM/DD/YYYY').toDate();
rawSObject = { [AccountFields.PersonBirthdate]: { $eq: SfDate.toDateLiteral(birthDateObj) };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66790502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档