数值在 firestore 中保存为字符串

Son*_*ony 8 typescript google-cloud-firestore

我使用此功能将数据发送到 Firestore

exports.professional = functions.https.onRequest((request, response) => {
    const db = admin.firestore();

    const userId: string = request.body['userId'];
    const qualificationId: number = request.body['qualificationId'];
    const occupationId: number = request.body['occupationId'];
    const employmentType: EMPLOYMENT_TYPE = request.body['employmentType'];
    const collegeOrInstitution: string = request.body['collegeOrInstitution'];

    return db.collection('profiles').doc(userId)
        .set(
        {
            professional: {
                qualifaicationId: qualificationId,
                occupationId: occupationId,
                employmentType: employmentType,
                collegeOrInstitution: collegeOrInstitution
            }
        },
        {
            merge: true
        }).then(writeResult => {
           return response.json(
                {
                    status: 1,
                    message: 'Professional details saved successfully',
                    result: userId
                }
            )
        });
});
Run Code Online (Sandbox Code Playgroud)

我已经将一些变量声明为数字,但是当我检查 firestore 文档时,它被保存为字符串。请看截图

截屏

在代码中,我已声明occupationId为数字变量,但保存后它是一个字符串,请再次查看屏幕截图。有谁知道它为什么改变数据类型?

zer*_*kms 9

声明,例如:

const occupationId: number
Run Code Online (Sandbox Code Playgroud)

如果分配类型是,则它们自己不转换传递的数据any(这样做是为了可以逐渐从 js 切换到 ts)。

如果您需要明确地有一个数字 - 您需要使用一些可以为您转换实际值类型的东西。

一种可能的方法:

const occupationId: number = Number(request.body['occupationId']);
Run Code Online (Sandbox Code Playgroud)

参考: