What is this Javascript “require”?

前端 未结 7 998
心在旅途
心在旅途 2020-11-22 03:46

I\'m trying to get Javascript to read/write to a PostgreSQL database. I found this project on github. I was able to get the following sample code to run in node.

<         


        
7条回答
  •  忘掉有多难
    2020-11-22 04:33

    Alright, so let's first start with making the distinction between Javascript in a web browser, and Javascript on a server (CommonJS and Node).

    Javascript is a language traditionally confined to a web browser with a limited global context defined mostly by what came to be known as the Document Object Model (DOM) level 0 (the Netscape Navigator Javascript API).

    Server-side Javascript eliminates that restriction and allows Javascript to call into various pieces of native code (like the Postgres library) and open sockets.

    Now require() is a special function call defined as part of the CommonJS spec. In node, it resolves libraries and modules in the Node search path, now usually defined as node_modules in the same directory (or the directory of the invoked javascript file) or the system-wide search path.

    To try to answer the rest of your question, we need to use a proxy between the code running in the the browser and the database server.

    Since we are discussing Node and you are already familiar with how to run a query from there, it would make sense to use Node as that proxy.

    As a simple example, we're going to make a URL that returns a few facts about a Beatle, given a name, as JSON.

    /* your connection code */
    
    var express = require('express');
    var app = express.createServer();
    app.get('/beatles/:name', function(req, res) {
        var name = req.params.name || '';
        name = name.replace(/[^a-zA_Z]/, '');
        if (!name.length) {
            res.send({});
        } else {
            var query = client.query('SELECT * FROM BEATLES WHERE name =\''+name+'\' LIMIT 1');
            var data = {};
            query.on('row', function(row) {
                data = row;
                res.send(data);
            });
        };
    });
    app.listen(80, '127.0.0.1');
    

提交回复
热议问题