I have an keys and want to push it to a specific item in my DB and i use .push() method when I add an item to firebase but it does not work as what I need it generates a new key and inside it add index
what i got
--Orders -LASDAWWDMASDsad -0:"orderOne" -DAWKDAWKWKDKADW -0:"OrderTwo" ...
What I need
--Orders -0:"orderOne" -1:"orderTwo" -2:"orderThree" ...
Code
const displayTable = document.getElementById('display-table')
, lipProCkBxs = document.querySelectorAll('#lip-pro input[type=checkbox]')
, tableTotal = document.querySelector('#display-table tfoot tr td:last-child')
const {snapshotVal, uid, serviceDB} = this.state;
onPress: () => {
let arr = [snapshotVal];
// console.log(arr); // ["orderOne"]
database()
.ref(`Providers/users/${uid}`)
.child('rejectedOrders')
.push(arr)
.then(
() => console.log('Done'),
setTimeout(() => {
this.props.navigation.goBack();
}, 200),
)
.catch(error => console.log('@error', error));
}
SOLVED By JS :”D
i make a query to get the length of a rejectedOrders then when i want to updates i just increase the length +1 And it works well :3
componentDidMount() {
let uid = auth().currentUser.uid;
database()
.ref(`Providers/users/${uid}`)
.child('rejectedOrders')
.on('value', snapshot =>
this.setState({arrlength: snapshot.val().length - 1}),
);
}
onPress: () => {
let arr = [snapshotKey];
console.log(arr);
let updates = {};
// updates[Math.floor(Math.random() * 10)] = snapshotKey;
updates[arrlength + 1] = snapshotKey;
database()
.ref(`Providers/users/${uid}`)
.child('rejectedOrders')
// .push(...arr)
.update(updates)
.then(...)
}
Advertisement
Answer
You can use set() instead of push():
database()
.ref(`Providers/users/${uid}`)
.child('rejectedOrders')
.set(arr)
.then(
() => console.log('Done'),
setTimeout(() => {
this.props.navigation.goBack();
}, 200),
)
.catch(error => console.log('@error', error));
}