我尝试使用 GCP 文件存储,按照产品网站中的简单快速示例进行操作,但收到错误:“google.api_core.exceptions.FailedPrecondition: 400 Cloud Firestore API 不适用于 Cloud Datastore 项目。”
我之前确实在同一个项目中使用过数据存储,然后我在项目中禁用了数据存储 api 并尝试了示例,仍然得到相同的错误,除了创建一个新项目之外,任何人都可以建议做什么?
如果您有一个空的 Cloud Datastore 数据库并且从未对数据库执行过写入操作,则可以通过单击“数据存储/实体”页面上的“升级到 FIRESTORE”按钮,以数据存储模式或本机模式升级到 Cloud Firestore .
如果您没有收到该选项,那么您的数据库实例将在未来自动升级(链接)。如果您在数据存储模式下从 Cloud Datastore 升级到 Cloud Firestore 或从数据存储模式升级到本机模式,则无法撤消该操作。
这里是文档的链接:https://cloud.google.com/datastore/docs/upgrade-to-firestore
我有
The Cloud Firestore API is not available for Datastore Mode projects
和一个空的 Firestore。
我已经通过以下步骤解决了错误:
遗憾的是,正如您在本例中看到的那样,Google 错误消息毫无用处。
我也遇到了同样的问题,解决方案是评论该行
.setProjectId(projectId)
。
此示例适用于位于另一个 GCP 项目中的本机 Firestore 实例
GoogleCredentials credentials = GoogleCredentials.fromStream(new ClassPathResource("/test-firebase.json").getInputStream());
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(credentials)
//.setProjectId(projectId)
.setDatabaseUrl("https://document-db.firebaseio.com/")
.build();
if (FirebaseApp.getApps().isEmpty()) {
FirebaseApp.initializeApp(options);
}
Firestore db = FirestoreClient.getFirestore();
DocumentReference docRef = db.collection("document-db").document("alovelace");
// Add document data with id "alovelace" using a hashmap
Map<String, Object> data = new HashMap<>();
data.put("first", "Ada");
data.put("last", "Lovelace");
data.put("born", 1815);
// asynchronously write data
ApiFuture<WriteResult> result = docRef.set(data);
嗯,您很可能在数据存储模式下使用 firestore,因此,您需要将其更改为本机模式,以便从终端进行更改。只需切换到本机模式,它应该可以正常工作。
好的,这是我的决定: