如何对数据库变量进行健全性和验证检查?

时间:2015-11-26 08:43:41

标签: javascript node.js

配置文件(conf.json):

{
    "mongodb": {
        "host": "127.0.0.1",
        "port": "3000",
        "db": "myproject"
    }
} 

在.js文件中的用法

var conf = require('./conf.json')
var host = conf.mongodb.host; 
var port = conf.mongodb.port; 
var db = conf.mongodb.db;
var url = "mongodb://"+host+":"+port+"/"+db;

在此之后,我正在使用 url 变量建立与mongodb的连接。

我想要实现的是在尝试连接到mongodb之前,它应该验证从conf.json文件中设置的所有变量。如果它们未定义或某些内容,则控制权应返回,而不是尝试尝试以下代码。

注意:我想过使用 if 条件对此变量进行undefined检查。但我正在寻找更好的解决方案。

我听说过“||” javascript的运营商可以提供帮助,但不确定如何?

1 个答案:

答案 0 :(得分:0)

" ||"运营商可以帮助您定义标准,例如像这样:

var host = conf.mongodb.host || "127.0.0.1";

这意味着"主持人"从" conf"中分配值如果它是非虚假的,否则标准值" 127.0.0.1"。

警告:如果你定义了" conf.mongodb.host"像一个虚假的价值,例如0,默认将被应用! 看看Falsy values in JS

根据您喜欢的行为,您可能希望改为抛出异常或实施高级检查以确保例如"主机"实际上是一个有效的IP地址。

如果您绝对想要使用" ||"运营商,试试:

function throwErr(msg){
    throw new Error(msg);
}

var host = conf.mongodb.host || throwErr("Mongo host undefined");
var port = conf.mongodb.port || throwErr("Mongo port undefined"); 
var db = conf.mongodb.db || throwErr("Mongo database name undefined");