我尝试使用 populate 将我的数据中的 ID 替换为 Firebase 中的其他数据,但它不起作用。
我使用“firebase”:“^7.3.0”、“react-redux-firebase”:“^3.0.5”、“redux”:“^4.0.4”、“react-redux”:“^7.1.3 ", "redux-thunk": "^2.3.0".
我的firebase db 点击显示
应用程序.js
import React, { Component } from 'react';
import AppContainer from './config/routes';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import rootReducer from './store/reducers/rootReducer';
import thunk from 'redux-thunk';
import { ReactReduxFirebaseProvider, getFirebase } from 'react-redux-firebase';
import { firebase} from './config/firebase';
const store = createStore(
rootReducer,
applyMiddleware(thunk.withExtraArgument(getFirebase)),
);
const rrfConfig = {
userProfile: 'users',
profileParamsToPopulate: [
{ child: 'nutrient', root: 'nutrients_list' }
]
}
const reactReduxFirebaseProps = {
firebase,
config: rrfConfig ,
dispatch: store.dispatch,
};
export default class App extends Component {
render() {
return (
<Provider store={store}>
<ReactReduxFirebaseProvider {...reactReduxFirebaseProps}>
<AppContainer />
</ReactReduxFirebaseProvider>
</Provider>
);
}
}
配置.js
import firebase from 'firebase/app';
import 'firebase/database'
const config = {
apiKey: 'my apiKey'
authDomain: 'my authDomain',
databaseURL: 'my databaseURL',
projectId: 'my projectId',
storageBucket: 'my storageBucket',
messagingSenderId: 'my messagingSenderId',
appId: 'my appId',
measurementId: 'my measurementId',
};
if (!firebase.apps.length) {
firebase.initializeApp(config);
}
export { firebase }
Food.js(在这个组件中我使用填充)
import React, { Component } from 'react';
import { View, Text, StyleSheet, ScrollView } from 'react-native';
import Icon from 'react-native-vector-icons/FontAwesome';
import { compose } from 'redux';
import { connect } from 'react-redux';
import { firebaseConnect, populate, isLoaded, isEmpty } from 'react-redux-firebase';
class Food extends Component {
render() {
const { mealsArray } = this.props;
if (!isLoaded(mealsArray)) {
return <ActivityIndicator size="large" />
}
if (isEmpty(mealsArray)) {
return <Text>There is no meals </Text>
}
return (
<View>
<ScrollView>
<Text>{JSON.stringify(mealsArray, null, 2)}</Text>
</ScrollView>
</View>
);
}
const populates = [
{ child: 'nutrient', root: 'nutrients_list' }
]
const mapStateToProps = state => {
return {
mealsArray: populate(state.firebase, 'meals', populates)
};
};
export default compose(
firebaseConnect([
{ path: 'meals', queryParams: ['orderByChild=date', 'equalTo=18/11/2019'], populates},
]),
connect(
mapStateToProps,
),
)(Food);
我希望关键的“营养素”将返回对象而不是 ID 号:
{
nutrient: {
name: 'buckwheat',
proteins: 12.6,
fats: 2.6,
carbs: 68,
calories: 329,
water: 10,
},
number: 1,
weight: 100,
}