nodejs文件追加內容(nodejs 文檔)

  • 1、求教,nodejs如何往mongoDB中批量插入數據
  • 2、如何加載Nodejs模塊
  • 3、Nodejs 如何文件追加從最開始開始追加
  • 4、nodejs中怎麼添加數據到mysqlzhong

nodejs把數據存到mongodb里方法:

首先,創建一個數據庫保存用戶信息。

在這個數據庫中創建一個名為 users 的集合,並插入一條用戶信息。當前沒有 users 集合,mongodb 會直接創建它。

db.users.insert( { “userId”:1, “name”:”tom”, “email”:”tom@nodejs.org” })

查找信息可以使用 find 或者 findOne,區別在於 findOne 只會返回一個結果。

db.users.findOne( {“userId”: 1})

返回的結果:

{

“_id” : ObjectId(“5413be6e9e1c9f9c4386756d”),

“userId” : 1,

“name” : “tom”,

“email” : “tom@nodejs.org”

}

驅動程序

編輯 package.json, 添加對於 mongodb 的引用。

{

“name”: “express-api”,

“version”: “0.0.1”,

“dependencies”: {

“express”: “2.5.9”,

“ejs”: “0.4.2”,

“mongodb”: “1.4.1”

}

}

重新 npm install 安裝 mongodb 的驅動。

使用 MongoDB 數據庫

修改代碼,首先 require mongodb 模塊,然後連接到 mongodb 數據庫。

var mongo = require(“mongodb”);

var express = require(“express”);

var app = express.createServer();

app.set(“view engine”, “ejs”);

app.set(“views”, __dirname + “/views”);

app.set(“view options”, { layout: false });

app.get(“/”, function (request, response) {

response.render(“index”);

});

app.get(“/user/:id”, function (request, response) {

var id = request.params.id;

console.log(id);

app.users.findOne({ “userId”: +id }, function (error, doc) {

if (error) return next(error);

response.json(doc);

});

});

// connect mongodb

var server = new mongo.Server(“127.0.0.1”, 27017);

var db = new mongo.Db(“members”, server, {safe:true }).open(function (error, client) {

if (error) throw error;

console.log(“\033[96m + \033[39m connected to mongodb”);

app.users = new mongo.Collection(client, “users”);

client.ensureIndex(“users”, “userId”, function (error) {

if (error) throw error;

console.log(“\033[96m + \033[39m ensured index.”);

console.log(“Web Server listening ……”);

app.listen(3000);

});

});

注意現在是到數據庫中查找用戶。id 前面的 + 用來將表單中的字符串類型數據轉換為需要的數字類型。

app.users.findOne({ “userId”: +id }, function (error, doc) {

if (error) return next(error);

response.json(doc);

});

nodejs的幾種模塊加載方式

一.直接在exports對象中添加方法

1. 首先創建一個模塊(module.js)module.js

exports.One = function(){

console.log(‘first module’);

};

2.load.jsvar module =require(‘./module’);

module.One();

這樣我們就可以在引入了該模塊後,返回一個exports對象,這裡是指module對象,其實都只是兩個引用或者句柄,只是都指向了同一個資源,在load.js里,module的名字可以是任意取的,因為它僅僅是指向require(‘./module’);返回後的一個實例對象的引用,在load.js文件里的module和在module.js里的exports對象是同一個東西.因此上述兩個文件可以用一個文件來表示:exports.One = function(){

console.log(‘first module’);

};

exports.One();

其運行結果是一致的,這裡我們可以很清晰的看到,我們在使用require(‘./xxxx’)後其實返回的總是在 xxxx.js文件中的exports對象的引用,這個引用的名字我們可以任意取,但是為了規範我們還是最好取符號某些非標準規定(後面說道),但是這樣會有不妥的地方,因為它是始終指向exports的實例對象,也就是說,我們雖然有了這個模塊,但是這個模塊我們只能使用一次,這取決於rquire(‘./module’)只會加在一次該模塊.比如我們修改上述代碼,

module.js

var name ;

exports.setName = function(oName){

name = oName;

};

exports.getName = function(){

console.log(name);

};

load.jsvar module1 = require(‘./module’);

module1.setName(“felayman1”);

module1.getName();

var module2 = require(‘./module’);

module2.setName(“felayman2”);

module2.getName();

module1.getName();

我們可以看到,雖然我們使用了兩次require(‘./module’);,但是當我們修改module2後,module1的內容也被修改,這恰恰說明了,module1和module2是指向的同一個對象.有時候這並不影響我們的程序,但是如果我們的module是Person呢?我們希望我們require(‘./person’)後返回的是不同的對象.因此,這種方式是有缺陷的,儘管很方便,這種方式在大部分nodejs的模塊中都是很常見,比如fs模塊,http模塊等.

二.將模塊中的函數掛載到exports對象的屬性上

person.js

function Person{

var name;

this.setName = function(theName){

name = theName;

};

this.sayHello = function(){

console.log(‘Hello’,name);

};

}

exports.Person = Person;

load.js

var Person = require(‘./person’).Person;

var person1 = new Person();

person1.setName(“felayman1”);

person1.sayHello();

var person2 = new Person();

person2.setName(“felayman2”);

person2.sayHello();

person1.sayHello();

這樣我們可以看到,我們就可以引入一個函數了,我們把在person.js文件中的Person函數設置為eports對象的一個屬性,我們只需要在load.js文件中引入該屬性,就可以獲取到多個該函數的實例,在nodejs中的EventEmitter就是基於這種方式,但是這樣我們總是在使用 require(‘./person’).Person;這樣的寫法有點太複雜,因此nodejs允許我們使用其他更簡潔的方式,利用全局變量–module,這樣我們在其他文件中引入其他模塊的時候,就更方便了.

三.利用全局變量module

person.js

function Person(){

var name;

this.setName = function(theName){

name = theName;

};

this.sayHello = function(){

console.log(‘Hello’,name);

};

}

// exports.Person = Person;

module.exports = Person;

load.jsvar Person = require(‘./person’);

var person1 = new Person();

person1.setName(“felayman1”);

person1.sayHello();

var person2 = new Person();

person2.setName(“felayman2”);

person2.sayHello();

person1.sayHello();

這樣一修改,我們就在使用require函數的時候就方便了,如果覺得這裡難以理解,我們可以把兩個文件里語法放到一起:var Person = require(‘./person’);

module.exports = Person;

這樣,我們就可以看出,其實就是這樣var Person = Person.

因為上述我們都已經說過,require(‘./person’)其實就是module.exports 對象的,這裡的module我們不用太在意,就跟javascript中的window一樣,是一個全局變量,即 module.exports =exports就類似於window.alert() =alert()差不多的效果,這樣我們就能看出,我們再次使用require(‘./person’)的時候其實就是導入了我們所需要的exports對象的屬性函數模板了,這樣我們也可以多次實例化我們所需要的對象了.這種方式是綜合了前兩種的方法,因此也是官方推薦的使用方法.

var http = require(“http”),

url = require(“url”),

path = require(“path”),

fs = require(“fs”);

http.createServer(function (req, res) {

var pathname=__dirname+url.parse(req.url).pathname;

if (path.extname(pathname)==””) {

pathname+=”/”;

}

if (pathname.charAt(pathname.length-1)==”/”){

pathname+=”index.html”;

}

path.exists(pathname,function(exists){

if(exists){

switch(path.extname(pathname)){

case “.html”:

res.writeHead(200, {“Content-Type”: “text/html”});

break;

case “.js”:

res.writeHead(200, {“Content-Type”: “text/javascript”});

break;

case “.css”:

res.writeHead(200, {“Content-Type”: “text/css”});

break;

case “.gif”:

res.writeHead(200, {“Content-Type”: “image/gif”});

break;

case “.jpg”:

res.writeHead(200, {“Content-Type”: “image/jpeg”});

break;

case “.png”:

res.writeHead(200, {“Content-Type”: “image/png”});

break;

default:

res.writeHead(200, {“Content-Type”: “application/octet-stream”});

}

fs.readFile(pathname,function (err,data){

res.end(data);

});

} else {

res.writeHead(404, {“Content-Type”: “text/html”});

res.end(“h1404 Not Found/h1”);

}

});

}).listen(8080, “127.0.0.1”);

console.log(“Server running at “);

要創建的數據庫名

TEST_DATABASE = ‘nodejs_mysql_test’,

//要創建的表名

TEST_TABLE = ‘test’;

//用戶名

client.user = ‘root’;

//密碼

client.password = ‘root’;

//創建連接

client.connect();

client.query(‘CREATE DATABASE ‘+TEST_DATABASE, function(err) {

if (err err.number != Client.ERROR_DB_CREATE_EXISTS) {

throw err;

}

原創文章,作者:CTBLS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126462.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CTBLS的頭像CTBLS
上一篇 2024-10-03 23:08
下一篇 2024-10-03 23:08

相關推薦

發表回復

登錄後才能評論