我试图让我的firebase云函数获取一些JSON并将其写入firestore。函数运行,但它似乎没有写任何东西,我似乎无法记录是否有任何实际获取?你知道为什么不给消防商店取东西和写信吗?
当我console.log(response.data.response.feedMessageResponse.messages.message)
它显示了我希望看到的JSON值,lat,lng,time等。
如果我尝试执行console.log(message.messageType),我什么也得不到。
为什么不寄给消防商店?
import axios from "axios";
import { firestore } from 'firebase-admin';
type SpotResponse = {
response: {
feedMessageResponse: {
count: number,
messages: {
message: Array<{
latitude: number,
longitude: number,
unixTime: number,
messageType: string,
batteryState: string,
}>,
},
},
errors: Array<{}>,
},
}
export default async () => {
const FirestoreInstance = firestore();
const feedID = '0u88e3hrgRoCDA4JEqkg41U1jhO25PbvW';
const url = `https://api.findmespot.com/spot-main-web/consumer/rest-api/2.0/public/feed/${feedID}/latest.json`;
const response = await axios.get<SpotResponse>(url)
const messages = response.data.response.feedMessageResponse.messages.message;
console.log(messages);
while (messages.length > 0) {
const message = messages.shift();
if (!message) throw new Error('No more items in the queue');
const formatedMessage: any = {
timestamp: firestore.Timestamp.fromMillis(message.unixTime * 1000),
location: new firestore.GeoPoint(message.latitude, message.longitude),
messageType: message.messageType,
batteryState: message.batteryState,
}
Object.keys(formatedMessage).forEach(key => formatedMessage[key] === undefined && delete formatedMessage[key]);
FirestoreInstance.collection('locationHistory').doc().create(formatedMessage)
.then((value: firestore.WriteResult) => {
console.log('Successfully inserted document', formatedMessage, 'at', value.writeTime);
})
.catch((reason: any) => {
console.error('Could not insert document', reason);
});
}
}
这是我的索引。ts
import * as functions from 'firebase-functions';
import retrievePositionData from './retrievePositionData';
const admin = require('firebase-admin');
admin.initializeApp();
export const fetchLocations = functions.pubsub
.schedule('*/10 * * * *')
.timeZone('America/Montreal')
.onRun(retrievePositionData);
1条答案
按热度按时间8yparm6h1#
我找到了一个更简单的方法,效果很好。