使用Node-JS的google-cloud / datastore库创建实体时,如何为值设置数据类型?

时间:2019-06-16 09:08:41

标签: node.js google-cloud-datastore

我正在尝试使用超过1500个字节的数据更新实体属性值,尽管该属性未建立索引并在Google控制台中显示为未建立索引,但仍然会出现以下错误:

Error: The value of property "Content" is longer than 1500 bytes.

我尝试通过控制台手动将Content属性的类型设置为“ Text”,这可以解决问题(当我运行下面的函数时,它会自动设置为String)。但是,我不知道如何使用数据存储库设置此类型。

这是我使用的代码的简化版本:

function addEntities (data) {
  const entities = data.map(datum => Object.assign({}, {
    key: datastore.key(['SomeKind']),
    excludeFromIndexes: ['Content', 'Feedback', ...Object.keys(datum)],
    data: Object.assign(datum, {
      'Status': 'New',
      'Content': "",
      'Feedback': ""
    })
  }))
  return datastore.insert(entities)
}

async function updateContent (content, entityId) {
  const query = datastore
    .createQuery('SomeKind')
    .filter('__key__', '=', datastore.key(['SomeKind', parseInt(entityId)]))
  const Entity = await datastore.runQuery(query)
  Entity[0][0]['Content'] = JSON.stringify(content)
  return datastore.upsert(Entity[0][0])
}

0 个答案:

没有答案