Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript Build a Simple Dynamic Site with Node.js Creating a Basic Template Engine in Node.js A Simple Merge Utility

Shaune Oosthuizen
Shaune Oosthuizen
127 Points

Node.js replace issue

Hi All,

I was wondering if anyone could assist me with this challenge. I believe There is something wrong when I try to 'replace' the placeholder key value with the first_name value going off of this error message 'Object [object Object] has no method 'replace''

index.js
var utilities = require("./utilities");

var mailValues = {};

mailValues.first_name = "Janet";

var emailTemplate = "Hi %first_name%! Thanks for completing this code challenge :)";

var mergedContent = utilities.merge(emailTemplate, mailValues, {encoding: "utf8"});

//mergedContent === "Hi Janet! Thanks for completing this code challenge :)";
utilities.js
function merge(content, values) {
  for (var key in content) {
    //replace all {{key}} with the value from the values object
    values = values.replace("%" + key + "%", content[key]);
  }
  return values;
}


module.exports.merge = merge;
Chris Adamson
Chris Adamson
132,143 Points

Your looping on the wrong parameter, values contains the dictionary/map and the assignment statement is backwards, i.e. you want to replace the value of contents (not values), and pull the value from the dictionary/map (values not content),

1 Answer

You were a bit close to resolve quizz:

function merge(content, values) {
  for(key in values) {
    content = content.replace("%" + key + "%", values[key]);
  }
  return content;
}


module.exports.merge = merge;

Try to find out why it is.