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 🙂