nodejs继承函数内部的函数

时间:2014-04-28 00:58:45

标签: node.js

我试图在一个内部继承一个函数,但我不确定如何。

function register(Username, Password, callback)
{
    var result;

    UserModel.findOne({username: Username}, function(error, data)
    {
        if(error)
            console.log(error);

        if(data)
            result = 'already exist';

        mongoose.connection.close();

        if(!data)
        {
            var user = new UseModel(
            {
                username: Username,
                password: Password
            });

            user.save(function(error)
            {
                if(error)
                {
                    console.log(error);
                    result = 'Error';
                }

                result = 'success';
                mongoose.connection.close();
            });
        }
    });
    callback;
}

我认为进行回调,我可以在那里设置自定义函数。

我已经看到人们会在另一个内部继承功能的某些地方,但我不再找到它们并且我正在尝试执行它们,因为这段代码我在mongo中保存了一条记录。

所以我只想说,在其他代码中,我用前2个参数调用这个函数,第三个将根据结果执行我希望它做的函数,就像这样。

this.register('myname', 'mypassword', function(
{
    if(result != 'error')
    {
        response.render('register',
        {
            'Title': Title,
            'result': result
        });
    }
}));

我不确定继承是否像这样。但这就是我想要做的事情,我正在学习节点的js所以请抱歉我的经验不足。

PD:即时为node.js使用express,swig,body-parser和mongoose模块

1 个答案:

答案 0 :(得分:1)

以下是register()函数的外观:

function register(Username, Password, callback)
{
    UserModel.findOne({username: Username}, function(error, data)
    {
        if(error)
            return callback(error);

        if(data)
            return callback(null, 'User already exists');

        var user = new UseModel(
        {
            username: Username,
            password: Password
        });

        user.save(function(error)
        {
            if(error)
                return callback(error);
            callback(null, 'Success');
        });
    });
}

以下是如何使用它:

this.register('myname', 'mypassword', function(error, result)
{
    if (error)
      return console.error(error); // do something better here
    response.render('register',
    {
        'Title': Title,
        'result': result
    });
});