I am using vue.js for my e-commerce project. I want to set the sale time limit in the firestore collection.
ex)If user want to stop to sell his or her product at 15:00, user can input 15:00.
Now I could set the time object in my collection. But I want to convert it to timestamp.
How can I achieve it?
I set this.limit like this way in the template tag.
<b-form-input type="time" v-model="limit"></b-form-input>
This is the script tag.
<script>
import fireApp from '@/plugins/firebase'
const firebase = require("firebase");
require("firebase/firestore");
const db = firebase.firestore();
let id = String(id);
import ErrorBar from '@/components/ErrorBar'
import { SpringSpinner } from 'epic-spinners'
export default {
name: "Products",
data() {
return {
show: false,
quantity: "",
initial: "",
sale: "",
limit: ""
}
},
components: {
SpringSpinner
},
created() {
},
methods: {
submitProduct() {
var docRefLimit = db.collection('Profile').doc(user.uid).collection('Product').doc('limit')
const timestamp = firebase.firestore.FieldValue.serverTimestamp()
docRefLimit.get().then((doc) => {
this.show =true;
if (doc.exists) {
docRefLimit.update({
limit: this.limit.timestamp,
}).then(() => {
this.show =false
})
} else {
docRefLimit.set({
limit: this.limit.timestamp,
})
.then(() => {
this.show =false
})
}
}).catch((error) => {
console.log("Error getting document:", error);
});
},
}
}
</script>
Advertisement
Answer
You don’t indicate if the timestamp should take the date of the day.
So let’s imagine you want to add a Timestamp for today at 15:00 to a Firestore document. Do as follows:
const limitHour = this.limit.substring(0, 2);
const limitMinutes = this.limit.substring(3, 5);
let today = new Date();
today.setHours(limitHour, limitMinutes, 0, 0);
var docRefLimit = db.collection('Profile').doc(user.uid).collection('Product').doc('limit');
docRefLimit.update({ limit: today })
.then(() => )
Note that firebase.firestore.FieldValue.serverTimestamp()
“returns a sentinel used with set()
or update()
to include a server-generated timestamp in the written data” which will be calculated by the Firestore backend, not in the frontend.