我有一个如下形式的JavaScript对象:
const data = {
title: "short string",
descriptions: [
"Really long string...",
"Really long string..."
]
}
长字符串需要从索引中排除,而且,不管出于什么原因,我不知道对象需要什么格式来保存它:
const entityToSave = dataToDatastore(data);
datastore.save({
key: datastore.key(["TestEntity"]),
data: entityToSave
})
我只需要知道entityToSave
应该是什么样子的,我试过20种不同的形状,每次尝试使用excludeFromIndexes
时,要么抛出一个错误,说字符串太大,要么最终成为一个实体类型而不是数组类型。
我可以让它通过GCP管理界面工作,所以我觉得我疯了。
编辑:为了方便起见,我包含了一个脚本,只要您(1)设置PROJECT_ID
和(2)向descriptions
数组添加适当长度的字符串,该脚本就应该运行。
const { Datastore } = require("@google-cloud/datastore");
const PROJECT_ID = null;
const data = {
title: "short string",
descriptions: [
"Really long string...",
"Really long string...",
]
}
const entityToSave = dataToDatastore(data);
async function save() {
const datastore = new Datastore({
projectId: PROJECT_ID,
});
console.log(entityToSave);
const entity = {
key: datastore.key(["TestEntity"]),
data: entityToSave
};
datastore.save(entity);
}
function dataToDatastore(data) {
return data
}
save();
我只需要知道dataToDatastore
应该是什么样子,我已经根据四五个不同地方的文档和讨论尝试了许多变体,但没有一个成功。
1条答案
按热度按时间qojgxg4l1#
您必须将
excludeFromIndexes: true
应用于数组中超过1500字节限制的所有实体。下面是
entityToSave
的外观有关详细信息,请查看此github issue和stackoverflow thread