আমি কীভাবে কোনও ব্যবহারকারীর নাম কীভাবে পাওয়া যায় যা কোনও ব্যবহারকারীর সংগ্রহে সংরক্ষিত একটি বৈশিষ্ট্য, যা ফায়ারবেস প্রমাণীকরণ মডেল দ্বারা নির্মিত বৈশিষ্ট্যের সাথে একত্রিত করা হয়েছে get
আমি লেখক ব্যবহারকারীর অ্যাক্সেস করতে পারি - যা আমাকে প্রমাণীকরণ সরঞ্জামে সীমাবদ্ধ ক্ষেত্রগুলিতে ফায়ারবেস সংগ্রহ করে এবং তারপরে আমি সেখান থেকে সম্পর্কিত ব্যবহারকারী সংগ্রহের দিকে যাবার চেষ্টা করছি (যা একই ইউআইডি ব্যবহার করে)।
আমার সাথে প্রতিক্রিয়া প্রসঙ্গে ভোক্তা রয়েছে:
import React from 'react';
const AuthUserContext = React.createContext(null);
export default AuthUserContext;
তারপরে আমার উপাদানটিতে আমি ব্যবহার করার চেষ্টা করছি:
const Test = () => (
<AuthUserContext.Consumer>
{authUser => (
<div>
{authUser.email} // I can access the attributes in the authentication collection
{authUser.uid.user.name} //i cannot find a way to get the details in the related user collection document - where the uid on the collection is the same as the uid on the authentication table
</div>
)}
</AuthUserContext.Consumer>
);
const condition = authUser => !!authUser;
export default compose(
withEmailVerification,
withAuthorization(condition),
)(Test);
আমার ফায়ারবেস.জেজে - আমি মনে করি যে আমি প্রমাণীকরণ মডেল থেকে লেখক ব্যবহারকারীর বৈশিষ্ট্যগুলি ব্যবহারকারীর সংগ্রহের বৈশিষ্ট্যগুলির সাথে একীভূত করার চেষ্টা করেছি:
class Firebase {
constructor() {
app.initializeApp(config).firestore();
/* helpers */
this.fieldValue = app.firestore.FieldValue;
/* Firebase APIs */
this.auth = app.auth();
this.db = app.firestore();
onAuthUserListener = (next, fallback) =>
this.auth.onAuthStateChanged(authUser => {
if (authUser) {
this.user(authUser.uid)
.get()
.then(snapshot => {
const dbUser = snapshot.data();
// default empty roles
if (!dbUser.roles) {
dbUser.roles = {};
}
// merge auth and db user
authUser = {
uid: authUser.uid,
email: authUser.email,
emailVerified: authUser.emailVerified,
providerData: authUser.providerData,
...dbUser,
};
next(authUser);
});
} else {
fallback();
}
});
প্রমাণীকরণ সংগ্রহ থেকে একই ইউড সহ একটি আইডি রয়েছে এমন ব্যবহারকারীর সংকলনে - আমি লেখকটির (যা প্রমাণীকরণের বৈশিষ্ট্যগুলিতে আমাকে পাওয়ার জন্য কাজ করে) থেকে কোনও উপায় খুঁজে পাচ্ছি না।
আমি এই পোস্টটি দেখেছি , যা একই সমস্যা বলে মনে হচ্ছে এবং উত্তরটি কী ইঙ্গিত করছে বলে কাজ করার চেষ্টা করেছিল - তবে আমি এমন কোনও উপায় খুঁজে পাচ্ছি না যা প্রমাণীকরণ সংগ্রহ থেকে ব্যবহারকারী সংগ্রহের দিকে যাওয়ার জন্য কাজ করে এবং আমি জানি না যে এটি সংযুক্তি আমার জন্য কী করছে তা যদি এটি আমাকে লেখক থেকে ব্যবহারকারী সংগ্রহের বৈশিষ্ট্যগুলিতে অ্যাক্সেস না দেয়।
আমি আমার ফায়ারবেস.জেএস-তে কোনও সহায়ককে একটি ইউআইডি থেকে একজন ব্যবহারকারী দেওয়ার জন্য চেষ্টা করেছি - তবে এটির সাহায্যও মনে হয় না।
user = uid => this.db.doc(`users/${uid}`);
users = () => this.db.collection('users');
পরবর্তী প্রচেষ্টা
আরও পটভূমি যুক্ত করতে, আমি একটি পরীক্ষার উপাদান তৈরি করেছি যা লেখক ব্যবহারকারীকে লগ (তবে রেন্ডার নয়) করতে পারে:
import React, { Component } from 'react';
import { withFirebase } from '../Firebase/Index';
import { Button, Layout } from 'antd';
import { AuthUserContext, withAuthorization, withEmailVerification } from '../Session/Index';
class Test extends Component {
constructor(props) {
super(props);
this.state = {
loading: false,
user: null,
...props.location.state,
};
}
componentDidMount() {
if (this.state.user) {
return;
}
this.setState({ loading: true });
// this.unsubscribe = this.props.firebase
// .user(authUser.uid)
// .onSnapshot(snapshot => {
// const userData = snapshot.data();
// console.log(userData);
// this.setState({
// user: snapshot.data(),
// loading: false,
// });
// });
}
componentWillUnmount() {
this.unsubscribe && this.unsubscribe();
}
render() {
const { user, loading } = this.state;
return (
<div>
<AuthUserContext.Consumer>
{authUser => (
console.log(authUser),
<p>
</p>
)}
</AuthUserContext.Consumer>
</div>
);
};
}
export default Test;
লগটি লগগুলিতে ইউইডি, ইমেল ইত্যাদির বিশদ প্রদর্শন করে তবে এটি আইটেমের দীর্ঘ তালিকার মধ্যে রয়েছে - যার অনেকগুলিই 1 বা 2 বর্ণের সাথে সংযুক্ত থাকে (এই প্রিফিক্সটির প্রতিটি কী কী তা জানতে কোনও কী খুঁজে পাচ্ছি না) অক্ষর মানে)। নীচে উত্তোলিত উদাহরণ:
এই মন্তব্য আপডেট করুন:
পূর্বে, আমি বলেছিলাম: ইউআইডি, ইমেল ইত্যাদির ক্ষেত্রগুলি এই উপসর্গগুলির নীচে নেস্টেড বলে মনে হয় না, তবে যদি আমি চেষ্টা করি:
console.log(authUser.email)
, আমি একটি ত্রুটি পেয়েছি যা বলে:
প্রকারের ত্রুটি: নালীর সম্পত্তি 'ইমেল' পড়তে পারে না
আপডেট: আমি ঠিক বুঝতে পেরেছি যে কনসোল লগে আমাকে লেবেলযুক্ত একটি ড্রপ ডাউন মেনু প্রসারিত করতে হবে:
Q {I: অ্যারে (0), l:
ইমেল বৈশিষ্ট্য দেখতে। কেউ কি জানে যে এই জিব্বারটি কিসের ইঙ্গিত দেয়? প্রমাণীকরণের টেবিলের প্রাসঙ্গিক বৈশিষ্ট্যগুলি পেতে এই বিষয়গুলি উল্লেখ করার কথা ছিল কিনা তা জানতে Q, I বা l এর অর্থ কী তা বোঝার জন্য আমি কোনও কী খুঁজে পাচ্ছি না। হতে পারে যদি আমি তা বুঝতে পারি - প্রমাণীকরণ সংগ্রহ থেকে uid ব্যবহার করে ব্যবহারকারী সংগ্রহের জন্য আমি কোনও উপায় খুঁজে পেতে পারি।
বর্তমান ব্যবহারকারী কে তা খুঁজে পাওয়ার জন্য প্রসঙ্গ ভোক্তার সাথে কি কেউ সামনের প্রান্তে প্রতিক্রিয়া ব্যবহার করেছে? যদি তা হয় তবে আপনি কীভাবে প্রমাণীকরণ মডেলটিতে তাদের বৈশিষ্ট্যগুলি অ্যাক্সেস করবেন এবং কীভাবে সম্পর্কিত ব্যবহারকারী সংগ্রহের বৈশিষ্ট্যগুলিতে অ্যাক্সেস করবেন (যেখানে ব্যবহারকারীর নথিতে ডকআইডি প্রমাণীকরণের টেবিল থেকে uid)?
পরবর্তী মনোযোগ
পরবর্তী প্রচেষ্টা একটি খুব অদ্ভুত ফলাফল এনেছে।
আমার 2 টি পৃথক পৃষ্ঠা রয়েছে যা প্রসঙ্গ ভোক্তা। তাদের মধ্যে পার্থক্য হ'ল একটি ফাংশন এবং অন্যটি একটি শ্রেণি উপাদান।
ফাংশন উপাদানটিতে, আমি {authUser.email nder রেন্ডার করতে পারি} আমি যখন ক্লাসের উপাদানগুলিতে একই জিনিসটি করার চেষ্টা করি তখন আমি একটি ত্রুটি পাই যা বলে:
প্রকারের ত্রুটি: নালীর সম্পত্তি 'ইমেল' পড়তে পারে না
এই ত্রুটিটি একই সেশন থেকে একই লগইন করা ব্যবহারকারীর সাথে আসছে।
দ্রষ্টব্য: ফায়ারবেস ডকুমেন্টেশনে যখন বলা হয়েছে যে বর্তমানের ব্যবহারকারীর সম্পত্তি প্রমাণীতে পাওয়া যায় - আমি এটিকে মোটেই কাজ করতে পারিনি।
আমার ফাংশন উপাদানটি রয়েছে:
import React from 'react';
import { Link } from 'react-router-dom';
import { compose } from 'recompose';
import { AuthUserContext, withAuthorization, withEmailVerification } from '../Session/Index';
const Account = () => (
<AuthUserContext.Consumer>
{authUser => (
<div>
{authUser.email}
</div>
)}
</AuthUserContext.Consumer>
);
// const condition = authUser => !!authUser;
// export default compose(
// withEmailVerification,
// withAuthorization(condition),
// )(Account);
export default Account;
যদিও আমি ব্যবহারকারীর সংগ্রহের বৈশিষ্ট্যগুলিতে পৌঁছাতে পারছি না যেখানে ব্যবহারকারীর নথিতে ডকআইডি প্রামাণিক ব্যবহারকারীর ইউআইডের সমান, এই উপাদানটি থেকে আমি এই ব্যবহারকারীর পক্ষে লেখক সংকলনে ইমেল বৈশিষ্ট্য আউটপুট করতে পারি।
যদিও Firebase ডকুমেন্টেশন ব্যবহারকারীদের পরিচালনা এবং এখানে বৈশিষ্ট্য অ্যাক্সেস করার জন্য এই পরামর্শটি সরবরাহ করে, আমি প্রতিক্রিয়া হিসাবে এই পদ্ধতির প্রয়োগ করার কোনও উপায় পাইনি। উভয়ই আমার ফায়ারবেস.জেএস-এ সাহায্যকারী তৈরি করে এবং কোনও উপাদানটিতে স্ক্র্যাচ থেকে শুরু করার চেষ্টা করে এটি করার চেষ্টা করার প্রতিটি প্রকারভেদ ফায়ারবেস অ্যাক্সেসে ত্রুটি তৈরি করে। তবে আমি ব্যবহারকারীর একটি তালিকা এবং তাদের সম্পর্কিত ব্যবহারকারী সংগ্রহের তথ্য তৈরি করতে পারি (লেখক ব্যবহারকারী যার উপর ভিত্তি করে আমি কোনও ব্যবহারকারী পেতে পারি না)।
আমার শ্রেণীর উপাদানটি রয়েছে:
import React from 'react';
import {
BrowserRouter as Router,
Route,
Link,
Switch,
} from 'react-router-dom';
import * as ROUTES from '../../constants/Routes';
import { compose } from 'recompose';
import { withFirebase } from '../Firebase/Index';
import { AuthUserContext, withAuthorization, withEmailVerification } from '../Session/Index';
class Dashboard extends React.Component {
state = {
collapsed: false,
};
onCollapse = collapsed => {
console.log(collapsed);
this.setState({ collapsed });
};
render() {
const { loading } = this.state;
// const dbUser = this.props.firebase.app.snapshot.data();
// const user = Firebase.auth().currentUser;
return (
<AuthUserContext.Consumer>
{authUser => (
<div>
{authUser.email} // error message as shown above
{console.log(authUser)} // output logged in amongst a long list of menus prefixed with either 1 or 2 characters. I can't find a key to decipher what these menus mean or do.
</div>
)}
</AuthUserContext.Consumer>
);
}
}
//export default withFirebase(Dashboard);
export default Dashboard;
আমার AuthContext.Provider এ - আমার আছে:
import React from 'react';
import { AuthUserContext } from '../Session/Index';
import { withFirebase } from '../Firebase/Index';
const withAuthentication = Component => {
class WithAuthentication extends React.Component {
constructor(props) {
super(props);
this.state = {
authUser: null,
};
}
componentDidMount() {
this.listener = this.props.firebase.auth.onAuthStateChanged(
authUser => {
authUser
? this.setState({ authUser })
: this.setState({ authUser: null });
},
);
}
componentWillUnmount() {
this.listener();
};
render() {
return (
<AuthUserContext.Provider value={this.state.authUser}>
<Component {...this.props} />
</AuthUserContext.Provider>
);
}
}
return withFirebase(WithAuthentication);
};
export default withAuthentication;
পরবর্তী মনোযোগ
সত্যিই আশ্চর্যজনক যে এই প্রয়াসের সাথে, আমি যে মানগুলিকে আমি দেখতে পাচ্ছি তা লগইন করার চেষ্টা করছি ডাটাবেসে এবং নামের মানটি 'অপরিজ্ঞাত' হিসাবে ফিরিয়ে দেওয়া হচ্ছে যেখানে ডিবিতে একটি স্ট্রিং রয়েছে।
এই প্রয়াসটি রয়েছে:
import React from 'react';
import {
BrowserRouter as Router,
Route,
Link,
Switch,
useRouteMatch,
} from 'react-router-dom';
import * as ROUTES from '../../constants/Routes';
import { compose } from 'recompose';
import { withFirebase } from '../Firebase/Index';
import { AuthUserContext, withAuthorization, withEmailVerification } from '../Session/Index';
class Dash extends React.Component {
// state = {
// collapsed: false,
// };
constructor(props) {
super(props);
this.state = {
collapsed: false,
loading: false,
user: null,
...props.location.state,
};
}
componentDidMount() {
if (this.state.user) {
return;
}
this.setState({ loading: true });
this.unsubscribe = this.props.firebase
.user(this.props.match.params.id)
// .user(this.props.user.uid)
// .user(authUser.uid)
// .user(authUser.id)
// .user(Firebase.auth().currentUser.id)
// .user(Firebase.auth().currentUser.uid)
.onSnapshot(snapshot => {
this.setState({
user: snapshot.data(),
loading: false,
});
});
}
componentWillUnmount() {
this.unsubscribe && this.unsubscribe();
}
onCollapse = collapsed => {
console.log(collapsed);
this.setState({ collapsed });
};
render() {
// const { loading } = this.state;
const { user, loading } = this.state;
// let match = useRouteMatch();
// const dbUser = this.props.firebase.app.snapshot.data();
// const user = Firebase.auth().currentUser;
return (
<AuthUserContext.Consumer>
{authUser => (
<div>
{loading && <div>Loading ...</div>}
<Layout style={{ minHeight: '100vh' }}>
<Sider collapsible collapsed={this.state.collapsed} onCollapse={this.onCollapse}>
<div />
</Sider>
<Layout>
<Header>
{console.log("authUser:", authUser)}
// this log returns the big long list of outputs - the screen shot posted above is an extract. It includes the correct Authentication table (collection) attributes
{console.log("authUser uid:", authUser.uid)}
// this log returns the correct uid of the current logged in user
{console.log("Current User:", this.props.firebase.auth.currentUser.uid)}
// this log returns the correct uid of the current logged in user
{console.log("current user:", this.props.firebase.db.collection("users").doc(this.props.firebase.auth.currentUser.uid
))}
// this log returns a big long list of things under a heading: DocumentReference {_key: DocumentKey, firestore: Firestore, _firestoreClient: FirestoreClient}. One of the attributes is: id: (...) (I can't click to expand this).
{console.log("current user:", this.props.firebase.db.collection("users").doc(this.props.firebase.auth.currentUser.uid
).name)}
//this log returns: undefined. There is an attribute in my user document called 'name'. It has a string value on the document with the id which is the same as the currentUser.uid.
<Text style={{ float: 'right', color: "#fff"}}>
{user && (
<Text style={{ color: "#fff"}}>{user.name}
//this just gets skipped over in the output. No error but also does not return the name.
</Text>
)}
</Text>
</Header>
</Layout>
</Layout>
</div>
)}
</AuthUserContext.Consumer>
);
}
}
export default withFirebase(Dash);
পরবর্তী মনোযোগ
সুতরাং এই প্রচেষ্টাটি আনাড়ি এবং সাহায্যকারী বা স্ন্যাপশট ক্যোয়ারী যা আমি উপরে ব্যবহার করার চেষ্টা করেছি সেগুলি ব্যবহার করে না, তবে কনসোলে ব্যবহারকারী সংগ্রহ নথি বৈশিষ্ট্যগুলি লগইন করুন:
{this.props.firebase.db.colલેક્શન ('ব্যবহারকারী')। ডক (authUser.uid) .get ()
.then(doc => {
console.log(doc.data().name)
})
}
আমি যা করতে পারি না তা হ'ল নামটি জেএসএক্সে রেন্ডার করার একটি উপায় খুঁজে পাওয়া
আপনি কীভাবে আউটপুট প্রিন্ট করবেন?
আমি যখন চেষ্টা করি:
{
this.props.firebase.db.collection('users').doc(authUser.uid).get().data().name
}
আমি একটি ত্রুটি পেয়েছি যা বলে:
TypeError: this.prop.firebase.db.colલેક્શન (...)। ডক (...)। পান (...)। ডেটা কোনও ফাংশন নয়
আমি যখন চেষ্টা করি:
{
this.props.firebase.db.collection('users').doc(authUser.uid).get()
.then(doc => {
console.log(doc.data().name),
<p>doc.data().name</p>
})
}
আমি একটি ত্রুটি পেয়েছি যা বলে:
লাইন 281: 23: একটি অ্যাসাইনমেন্ট বা ফাংশন কল প্রত্যাশিত এবং পরিবর্তে একটি অভিব্যক্তি অ-অব্যবহৃত-এক্সপ্রেশন দেখেছি saw
আমি যখন চেষ্টা করি:
{
this.props.firebase.db.collection('users').doc(authUser.uid).get("name")
.then(doc => {
console.log(doc.data().name),
<p>doc.data().name</p>
})
}
ত্রুটি বার্তাটি বলে:
একটি অ্যাসাইনমেন্ট বা ফাংশন কল প্রত্যাশিত এবং পরিবর্তে একটি অভিব্যক্তি দেখেছি
আমি কীভাবে স্ন্যাপশট ক্যোয়ারীগুলি কাজ করতে পারি তা জানার চেষ্টা করতে ছাড়তে প্রস্তুত - যদি আমি কেবল স্ক্রিনে রেন্ডার করার জন্য ব্যবহারকারী সংগ্রহের নাম পেতে পারি। কেউ কি এই পদক্ষেপে সাহায্য করতে পারে?
পরবর্তী মনোযোগ
আমি এই পোস্ট পেয়েছি । কী ঘটতে হবে তার এটির একটি ভাল ব্যাখ্যা রয়েছে তবে আমি এটি প্রদর্শিত হিসাবে বাস্তবায়ন করতে পারছি না কারণ কম্পোনেন্টডিডমাউন্ট লেখক কী তা জানেন না।
আমার বর্তমান প্রচেষ্টা নিম্নরূপ - যদিও বর্তমানে লিখিত আছে, authUser হ'ল রিটার্ন মানটির একটি মোড়ক - এবং উপাদান-ডিডমাউন্ট সেগমেন্টটি জানেন না যে লেখকটি কী।
import React from 'react';
import {
BrowserRouter as Router,
Route,
Link,
Switch,
useRouteMatch,
} from 'react-router-dom';
import * as ROUTES from '../../constants/Routes';
import { compose } from 'recompose';
import { Divider, Layout, Card, Tabs, Typography, Menu, Breadcrumb, Icon } from 'antd';
import { withFirebase } from '../Firebase/Index';
import { AuthUserContext, withAuthorization, withEmailVerification } from '../Session/Index';
const { Title, Text } = Typography
const { TabPane } = Tabs;
const { Header, Content, Footer, Sider } = Layout;
const { SubMenu } = Menu;
class Dashboard extends React.Component {
// state = {
// collapsed: false,
// loading: false,
// };
constructor(props) {
super(props);
this.state = {
collapsed: false,
loading: false,
user: null,
...props.location.state,
};
}
componentDidMount() {
if (this.state.user) {
return;
}
this.setState({ loading: true });
this.unsubscribe = this.props.firebase
.user(this.props.match.params.id)
.onSnapshot(snapshot => {
this.setState({
user: snapshot.data(),
loading: false,
});
});
// }
// firebase.firestore().collection("users")
// .doc(this.state.uid)
// .get()
// .then(doc => {
// this.setState({ post_user_name: doc.data().name });
// });
// }
this.props.firebase.db
.collection('users')
.doc(authUser.uid)
.get()
.then(doc => {
this.setState({ user_name: doc.data().name });
// loading: false,
});
}
componentWillUnmount() {
this.unsubscribe && this.unsubscribe();
}
onCollapse = collapsed => {
console.log(collapsed);
this.setState({ collapsed });
};
render() {
// const { loading } = this.state;
// const { user, loading } = this.state;
// let match = useRouteMatch();
// const dbUser = this.props.firebase.app.snapshot.data();
// const user = Firebase.auth().currentUser;
return (
<AuthUserContext.Consumer>
{ authUser => (
<div>
<Header>
{/*
{
this.props.firebase.db.collection('users').doc(authUser.uid).get()
.then(doc => {
console.log( doc.data().name
)
})
}
*/}
</Text>
</Header>
<Switch>
</Switch>
</div>
)}
</AuthUserContext.Consumer>
);
}
}
export default withFirebase(Dashboard);
পরবর্তী মনোযোগ
এরপরে, আমি আউথকন্টেক্সট-এর ভিতরে ড্যাশবোর্ডের জন্য রুটটি মোড়ানোর চেষ্টা করেছি ons কনসুমার যাতে পুরো উপাদানটি এটি ব্যবহার করতে পারে - এর ফলে আমাকে উপাদানটিডমাউন্ট ফাংশনে লগ ইন করা ব্যবহারকারীকে অ্যাক্সেস করতে দেয়।
আমি রুটটি এতে পরিবর্তন করেছি:
<Route path={ROUTES.DASHBOARD} render={props => (
<AuthUserContext.Consumer>
{ authUser => (
<Dashboard authUser={authUser} {...props} />
)}
</AuthUserContext.Consumer>
)} />
এবং ড্যাশবোর্ড উপাদান রেন্ডার স্টেটমেন্ট থেকে গ্রাহককে সরান।
তারপরে ড্যাশবোর্ডের উপাদানটিতে থাকা ডিডমাউন্টে আমি চেষ্টা করেছি:
componentDidMount() {
if (this.state.user) {
return;
}
this.setState({ loading: true });
this.unsubscribe =
this.props.firebase.db
.collection('users')
//.doc(this.props.firebase.db.collection('users').doc(this.props.firebase.authUser.uid))
.doc(this.props.firebase.db.collection('users').doc(this.props.authUser.uid))
.get()
.then(doc => {
this.setState({ name: doc.data().name });
loading: false,
});
}
আমি যখন এটি চেষ্টা করি তখন আমি একটি ত্রুটি পাই যা বলে:
ফায়ারবাসেরর: ফাংশন কালেকশন রেফারেন্স.ডোক () এর প্রথম আর্গুমেন্টটি খালি খালি স্ট্রিং টাইপের হওয়া দরকার তবে এটি ছিল: একটি কাস্টম ডকুমেন্টের রেফারেন্স অবজেক্ট
নেক্সট এটেম্পট নীচের লোকেরা প্রথম প্রস্তাবিত সমাধানটিতে সহায়ক কিছু খুঁজে পেয়েছেন বলে মনে হয়। আমি এতে দরকারী কিছু খুঁজে পাচ্ছি না, তবে এর পরামর্শগুলি আবার পড়ছি, ফায়ারবেস ডকুমেন্টেশনের উদাহরণটি কীভাবে (এটি .doc () অনুরোধটিকে ইউডি মান দিতে হবে তা প্রকাশ করে না তা দেখার জন্য আমি লড়াই করে যাচ্ছি ) যা নিম্নরূপ:
db.collection("cities").doc("SF");
docRef.get().then(function(doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
কম্পোনেন্টডিডমাউন্ট ফাংশনে আমার প্রচেষ্টার থেকে মৌলিকভাবে পৃথক, যা হ'ল:
this.unsubscribe =
this.props.firebase.db
.collection('users')
// .doc(this.props.firebase.db.collection('users').doc(this.props.firebase.authUser.uid))
// .doc(this.props.firebase.db.collection('users').uid: this.props.firebase.auth().currentUser.uid )
.doc(this.props.authUser.uid)
.get()
.then(doc => {
this.setState({ user.name: doc.data().name });
// loading: false,
}else {
// doc.data() will be undefined in this case
console.log("Can't find this record");
}
);
}
হয়তো সেই পদক্ষেপটি সমাধান করা একটি সূত্র যা এটিকে কোনও ফলাফলের দিকে নিয়ে যেতে সহায়তা করবে। লগ-ইন থাকা ব্যবহারকারী শ্রোতার uid ব্যবহার করে কীভাবে কোনও ব্যবহারকারী সংগ্রহের রেকর্ড পাবেন তা দেখানোর জন্য যে কেউ ফায়ার স্টোর ডকুমেন্টেশন পেতে পারেন?
সে লক্ষ্যে আমি ফ্রেন্ডলি ইটস কোড ল্যাব উদাহরণ থেকে দেখতে পাচ্ছি যে কোডটিতে আইডি অনুসন্ধান মানকে একটি ডক.ইড দেওয়ার চেষ্টা রয়েছে। আমি জানি না এই কোডটি কোন ভাষায় লিখিত হয়েছে - তবে এটি আমি যা করার চেষ্টা করছি তার সাথে এটির মতো দেখাচ্ছে - আমি কেবল উদাহরণটি থেকে এমন কিছুতে কীভাবে সরিয়ে যেতে পারি যা আমি জানি যে কীভাবে কাজ করতে হয়।
display: function(doc) {
var data = doc.data();
data['.id'] = doc.id;
data['go_to_restaurant'] = function() {
that.router.navigate('/restaurants/' + doc.id);
};