Когда я запрашиваю данные из своего приложения JS Nest, я получаю объект JSON, который, кажется, состоит из всего, что связано с моей базой данных, кроме данных, которые я запрашиваю. У меня есть закрытый ключ, версия firestore, время его создания и все такое. Я не только хочу знать, как исправить эту проблему, но я хочу знать, как предотвратить запрос текущих результатов так, как я их запрашиваю, потому что я полагаю, что кто-то может легко взломать мою базу данных таким образом.
Я подключаюсь к базе данных, используя метод, описанный на страницах do c, который является кодом ниже.
const admin = require("firebase-admin");
const serviceAccount = require("../path_to_my_file");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "link_to_database"
});
const db = admin.firestore();
Я запускаю firebase serve --only functions
и делаю запрос в моем служебном файле следующим образом
async getSampleData(){
const dataFetcher = db.collection('product_index_list').doc('golden_ratio_dividers');
return await dataFetcher.get();
}
В моем контроллере Nest JS у меня есть эта функция, которая отправляет запрос функции getSampleData()
в службе.
@Get('get-sample-data')
getSampleData(){ return this.appService.getSampleData(); }
Итак, когда я перехожу к localhost:3333/api/get-sample-data
, я получаю верните следующий объект, который я лишил всех значений
{
"_fieldsProto":{
"title":{
"stringValue":"Golden Ratio Dividers",
"valueType":"stringValue"
}
},
"_ref":{
"_firestore":{
"_settings":{
"credentials":{
"private_key":"******",
"client_email":"***"
},
"projectId":"***",
"firebaseVersion":"***",
"libName":"****",
"libVersion":"***",
"servicePath":"****",
"port":******,
"clientConfig":{},
"scopes":["*****","****"]
},
"_settingsFrozen":*****,
"_serializer":{
"allowUndefined":***
},
"_projectId":"*****",
"registeredListenersCount":***,
"_lastSuccessfulRequest":********,
"_backoffSettings":{
"initialDelayMs":****,
"maxDelayMs":****,
"backoffFactor":****
},
"_preferTransactions":****,
"_clientPool":{
"concurrentOperationLimit":****,
"maxIdleClients":***,
"activeClients":{},
"terminated":****,
"terminateDeferred":{
"promise":{}
}
}
},
"_path":{
"segments":["*****","******"]
},
"_converter":{}
},
"_serializer":{
"allowUndefined":****
},
"_readTime":{
"_seconds":****,
"_nanoseconds"****
},
"_createTime":{
"_seconds":******,
"_nanoseconds":******
},
"_updateTime":{
"_seconds":*****,
"_nanoseconds":******
}
}
Что я делаю здесь не так с тем, как я вызываю свои данные, и как я могу убедиться, что могу защитить себя от того, что кто-то может просто сделать тот же запрос, чтобы получить мои учетные данные?