FireStorewhere
が機能していないか、何か問題があります。私は電子メールでユーザーにしようとしています:[email protected]
コードは次のとおりです。
const admin = require('firebase-admin');
var serviceAccount = require('../secret/nicecode-e3e53-2ddaa9d588ea.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
var db = admin.firestore();
const settings = {/* your settings... */ timestampsInSnapshots: true};
db.settings(settings);
function begin(email){
return new Promise(function (res,rej){
var ans
var citiesRef = db.collection('users');
var allCities = citiesRef.get()
.then(snapshot => {
snapshot.forEach(doc => {
console.log(doc.id, '=>', doc.data());
});
})
.catch(err => {
console.log('Error getting documents', err);
});
var citiesRef = db.collection('users');
console.log(email)
var query = citiesRef.where('email', '==', email).get()
.then(doc => {
if (!doc.exists) {
ans = {
"login_token": "7705cb58bbff3afa888a624747f8d1caaff08f6ed0dc465c7d2361fd62532bd7",
"next": "FAILURE",
"failure_step": {
"heading": "Error",
"description": "There is no account registered for "+email,
"actions": [{"label": "Sign up", "url": "/en/signup"}, {
"label": "Sign in",
"url": "/en/login"
}]
}
}
} else {
console.log('Document data:', doc.data());
ans = {
"login_token": "cd01b73935b9262ac8a2bac3f81b6ed6ec78c15d3da5fc04f03879ebdd6931a9",
"next": "PASSWORD",
"password_step": {"heading": "Password", "description": "Enter your password", "error": ""}
}
}
res(ans)
})
.catch(err => {
console.log('Error getting document', err);
});
})
}
begin('[email protected]').then(function (data) {
console.log(data)
})
これを出力します。(すべてのユーザーを取得しただけで、「[email protected]」という電子メールを持つユーザーが見つかることに注意してください)
[email protected]
{ login_token: '7705cb58bbff3afa888a624747f8d1caaff08f6ed0dc465c7d2361fd62532bd7',
next: 'FAILURE',
failure_step:
{ heading: 'Error',
description: 'There is no account registered for [email protected]',
actions: [ [Object], [Object] ] } }
OqClQYBH8PWiNE2VF193 => { email: '[email protected]',
password_hash: 'E014231EF9830992D2E367231EEDE99C189B6518CE70E2AB8F414C784257751F' }
Firestoreに対してクエリを実行すると、条件に一致するドキュメントが複数存在する場合があります。そのため、得られる結果はではなくDocument
、QuerySnapshot
です。また、(とは異なりDocument
)にQuerySnapshot
はexists()
メソッドがありませんが、empty
使用できるプロパティがあります。
そう:
var query = citiesRef.where('email', '==', email).get()
.then(querySnapshot => {
if (querySnapshot.empty) {
ans = {
"login_token": "7705cb58bbff3afa888a624747f8d1caaff08f6ed0dc465c7d2361fd62532bd7",
"next": "FAILURE",
"failure_step": {
"heading": "Error",
"description": "There is no account registered for "+email,
"actions": [{"label": "Sign up", "url": "/en/signup"}, {
"label": "Sign in",
"url": "/en/login"
}]
}
}
} else {
var doc = querySnapshot.docs[0];
console.log('Document data:', doc.data());
ans = {
"login_token": "cd01b73935b9262ac8a2bac3f81b6ed6ec78c15d3da5fc04f03879ebdd6931a9",
"next": "PASSWORD",
"password_step": {"heading": "Password", "description": "Enter your password", "error": ""}
}
}
res(ans)
})
.catch(err => {
console.log('Error getting document', err);
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加