5er*_*5er 1 firebase typescript google-cloud-platform google-cloud-functions google-cloud-firestore
我正在 TypeScript 中编写云函数,并尝试从 firebase 获取 Map 对象 - AKA(嵌套对象,称为地图),以便我能够迭代它。
这是我的 Firebase 中的结构:
我正在尝试获取如下数据:
const tokenSettingsRef = db.collection('tokenSettings').doc('spread')
transaction.get(tokenSettingsRef).then((tokenSettingsDocSnapshot) => {
const tokenData = tokenSettingsDocSnapshot.data()
if (typeof tokenData !== 'undefined') {
console.log("tokennne3: " + tokenData.tokens[0])
console.log("tokennne4: " + tokenData)
console.log("tokennne5: " + tokenData.tokens)
console.log("tokennne1: " + tokenData.tokens.length())
console.log("tokennne2: " + tokenData.tokens.keys())
const variations = new Map(Object.entries(tokenData.tokens));
console.log("tokennne5: " + variations.keys)
console.log("tokennne6: " + variations.values)
Run Code Online (Sandbox Code Playgroud)
以上都没有给我地图,所以我可以使用它......或者将其注销。我正在获取数据,但我只能看到 smtg 之类的[object Object]
我在这里缺少什么,我在获取数组或普通对象方面没有任何问题......
根据您问题中的代码,我假设您在transaction.
以下应该有效:
var tokenSettingsRef = db.collection('tokenSettings').doc('spread');
db.runTransaction(transaction => {
return transaction.get(tokenSettingsRef).then(tokenSettingsDocSnapshot => {
if (!tokenSettingsDocSnapshot.exists) {
throw "Document does not exist!";
}
var tokensMap = tokenSettingsDocSnapshot.data().tokens;
//Let's print all the keys and values of the tokens map
Object.keys(tokens).forEach(e =>
console.log(`key=${e} value=${tokens[e]}`)
);
//...... Continue the transaction
});
}).then(function() {
//....
})
.catch(error => {
console.log('Transaction failed: ', error);
});
Run Code Online (Sandbox Code Playgroud)
如果您想“Map<number, number>从中获取对象”,如下面评论中所要求的,您可以执行以下操作:
var tokensMap = tokenSettingsDocSnapshot.data().tokens;
const transformedTokensMap = new Map<number, number>();
Object.keys(tokensMap).forEach(e => {
transformedTokensMap.set(Number(e), tokensMap[e]);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3058 次 |
| 最近记录: |