如何向Firebase Firestore添加多个路径?

时间:2018-03-17 13:05:28

标签: javascript firebase web google-cloud-firestore

我尝试了很多方法,但找不到向Firestore添加至少四条路径的方法。

我的JSON树如下:

ActiveTrades -> Userid -> autogeneratedId -> data fields

我尝试过如下:

var ref = firebase.firestore();
var addOrder = ref.collection("ActiveTrades").doc(userId).add({
 orderId: 1234
});

var ref = firebase.firestore();
var addOrder = ref.doc("ActiveTrades/"+userid).add({
 orderId: 1234
});

2 个答案:

答案 0 :(得分:1)

您遇到的第一个问题是,您只能将文档添加到集合中。您正在尝试将文档添加到另一个文档。请查看Cloud Firestore Data Model文档以便更好地理解。

您需要使用以下方法之一构建数据: /ActiveTrades/{userId}/orders/{orderId} 要么 /ActiveTrades/{orderId}

如果您想添加自动ID,有两种方法可以执行此操作...

创建自动ID,然后设置

var ref = firebase.firestore();
var orderRef = ref.collection("ActiveTrades").doc(userId).collection("orders").doc();
console.log("The new order ID is", orderRef.id);
var addOrder = orderRef.set({
 orderId: 1234
});

创建一个新文档,然后获取ID

var ref = firebase.firestore();
var addOrder = ref.collection("ActiveTrades").doc(userId).collection("orders").add({
 orderId: 1234
}).then(response => {
  console.log("The new order ID is", response.id);
});

答案 1 :(得分:1)

至于获取自动生成的uid,只需致电.doc()like

// Add a new document with a generated id.
var newCityRef = db.collection("cities").doc();

// later...
newCityRef.set(data);

在联机Firebase Web控制台中查看Firestore数据库。注意可用的选项。 ActiveTrades是文档集合 Documents 可以包含字段或sub 集合。虽然this is documented,但最容易(对我来说)在视觉上看到它。

所以,试着避免考虑“路径”,因为这不是XML / XPath,它甚至不是JSON - 它是Firestore。

您可以使用.collection(“collName”)获取位置.doc(“docName”... 你也可以用“collName / docName”简写来解决它。我相信。

enter image description here