Key-value tags for topics or posts



  • I'm just getting started with nodeBB. I would really like to associate key-value pairs with topics. That is, I want to be able to tag a topic with things like "priority: low" or "prog_lang: julia". The only thing I found so far is https://community.nodebb.org/topic/1858/embedded-metadata-for-posts-and-other-objects.

    Any thoughts about the feasibility of this would be appreciated.


  • Community Rep

    Store the values in a database hash. Call it topic:{tid}:yourplugin, where {tid} is the topic id.

    The hash is a key-value store, so you would do,

    db.setObjectField('topic:{tid}:yourplugin', 'priority', 'low')
    

    to set a value. You do not need to define the object ahead of time.

    Now you probably want to add that data to the template vars so it can be displayed to the user, so hook into filter:topic.build and add the values.

    plugin.topicBuild = function(data, next) {
      db.getObject('topic:' + data.templateData.tid + ':yourplugin', function (err, yourdata){
          if (err) console.log(err)
          if (err || !yourdata) return next(null, data)
    
          // Add your key-values to the template data.
          data.templateData.yourplugin = yourdata
          next(null, data)
      })
    }
    

    Now you will be able to see the data in your template using, e.g.
    {yourplugin.priority}


  • Community Rep

    Oh, just realized you posted this in feature requests. This is more of a plugin thing. No way to do this in core.



  • Thanks, this is useful. I only posted under feature requests because I'm new and don't yet know how things work around here. I now know that this would have to be implemented as a plugin, and I suspect that it will not be too difficult. That is a lot more than I knew yesterday!


Log in to reply
 


Looks like your connection to NodeBB was lost, please wait while we try to reconnect.