Advanced Node.js Development
上QQ阅读APP看书,第一时间看更新

Mongoose types

If you've been playing around with the various types, you might have noticed that if you set a type equal to something other than the type you specified, in certain cases it does still work. For example, if I try to set text equal to an object, I'm going to get an error. It's going to say hey, you tried to use a string, but an object showed up instead. However, if I try to set text equal to something like a number, I'm going to go with 23:

var otherTodo = new Todo ({
  text: 23
});

This is going to work. That's because Mongoose is going to cast your number into a string, essentially wrapping it in quotes. The same thing is going to be true with the Boolean. If I pass in a Boolean like this:

var otherTodo = new Todo ({
  text: true
});

The resulting string is going to be "true". I'm going to go ahead and save the file after setting text equal to true, and run the script:

When I do it, I get text equal to true, as shown in the preceding screenshot. Notice it is indeed wrapped in quotes. It's important to be aware that typecasting does exist inside of Mongoose. It can easily trip you up and cause some unexpected errors. For now though, I am going to set text equal to a proper string:

var otherTodo = new Todo ({
  text: 'Something to do'
});