Determining string length in Node JS when string may be null


I'm trying to learn Node and have the function:

this.logMeIn = function(username,stream) {
  if (username === null || username.length() < 1) {
    stream.write("Invalid username, please try again:\n\r");
    return false;
  } else {

and I'm passing it

if (!client.loggedIn) {
  if (client.logMeIn(String(data.match(/\S+/)),stream)) {

I've tried both == and ===, but I'm still getting errors as the username is not detecting that it is null, and username.length() fails on:

if (username === null || username.length() < 1) {
TypeError: Property 'length' of object null is not a function

I'm sure that Node won't evaluate the second part of the || in the if statement when the first part is true - but I fail to understand why the first part of the if statement is evaluating to false when username is a null object. Can someone help me understand what I've done wrong?

5/17/2012 12:26:51 PM

Accepted Answer

You're passing String(data.match(/\S+/)) as username argument, so when data.match(/\S+/) is null, you get "null" not null for username, as:

String(null) === "null"

So you need to change your condition:

if( username === null || username === "null" || username.length < 1 )
5/17/2012 1:05:43 PM

length is an attribute, not a function. Try username.length

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow