I am creating a message board using TipTap in a Vue.js project with a Firebase DB. I would prefer not to have to use moment.js or another library as it seems superfluous.
This is the code for my simple method parse which I feel like is correct. Pretty vanilla JS if you ask me.
methods: {
pushContent() {
var timestamp = function() {
let d = new Date(),
year = d.getYear(),
day = d.getDay(),
month = d.getMonth(),
today = month + "/" + day + "/" + year;
return today;
}
db.ref('thanktank').push({
authorID: this.currentUserId,
text: this.editor.getHTML(),
timestamp: timestamp
})
this.editor.clearContent();
},
},I first get a Vue warning saying this –
[Vue warn]: Error in v-on handler: "Error: Reference.push failed: first argument contains a function in property 'thanktank.timestamp' with contents = function timestamp() {
var d = new Date(),
year = d.getYear(),
day = d.getDay(),
month = d.getMonth(),
today = month + "/" + day + "/" + year;
return today;
}"And then the error saying this –
Reference.push failed: first argument contains a function in property 'thanktank.timestamp' with contents = function timestamp() {
var d = new Date(),
year = d.getYear(),
day = d.getDay(),
month = d.getMonth(),
today = month + "/" + day + "/" + year;
return today;
}Advertisement
Answer
you are trying to save a function in the database instead of calling it. Do like this:
db.ref('thanktank').push({
authorID: this.currentUserId,
text: this.editor.getHTML(),
timestamp: timestamp()
})
instead of passing the timestamp function itself, call it 🙂