fatihsarac adlı üyeden alıntı:
mesajı görüntüle
http://net.tutsplus.com/tag/node-js/
16
●9.266
npm install coffee-script npm install felixge/node-mysqlAşağıdaki kodu 'simple_node_server.coffee' olarak kaydedin ve terminalde aynı dizinde aşağıdaki kodu çalıştırın.
coffee simple_node_server.coffee
http = require('http')
server = http.createServer (request, response) ->
response.writeHead 200, {'Content-Type': 'text/html; charset=utf-8'}
response.end 'Merhaba Dünya'
server.listen 5555
console.log 'http://127.0.0.1:5555/ adresinde sunucu dinliyor'Yukarıdaki basit örnek bir sunucu oluşturuyor ve 5555 nolu port üzerinden dinliyor. Gelen isteklere response ile cevap veriyor. Ancak gelen istekler için uğraşmak biraz yorucu. Tabii bunları PHP ile yaparken sunucu işlemlerini genellikle Apache gibi bir web sunucusuna bırakıyorsunuz. Istek bilgilerine $_POST, $_GET, $_SERVER gibi değişkenler vasıtasıyla ulaşıyorsunuz. Geri göndereceğiniz cevabı pek çok etkeni düşünmek zorunda kalmadan basit bir 'echo "Merhaba Dünya"; ' ile yapabiliyorsunuz. İşin bu kısmı Node.js bilmekten çok web sunucuları hakkında bilgi sahibi olmanıza dayalı. Zira HTTP sunucu desteği sağlayan pek çok farklı platform buna benzer bir arayüzü size sunuyor.CREATE TABLE IF NOT EXISTS `entries` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `subject` varchar(16) NOT NULL, `content` text NOT NULL, `created_at` int(11) NOT NULL, `updated_at` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;Bu kodu 'simple_node.coffee' adındaki bir dosyaya kaydedin ve aynı dizinde iken, terminalde aşağıdaki komutu çalıştırın. Node.js ile 5555 nolu port üzerinde bir web sunucusu kurmuş olacaksınız. Bu sunucu aynı zamanda '/', '/new' ve '/create' yollarına cevap veriyor. 'Başlık' ve 'mesaj'dan oluşan verilerinizi 'mysql'den okuyabilir ve yeni veriler kaydedebilirsiniz.
coffee simple_node.coffee
port = 5555
db_host = 'localhost'
db_username = 'root'
db_password = ''
db_name = 'test'
puts = (obj) ->
console.log obj
zeroFill = (number) ->
return '' + number if number > 9
'0' + number
Date::formatted = ->
zeroFill(@.getDate()) + '.' + zeroFill(@.getMonth() + 1) + "." + @.getFullYear();
class Server
constructor: () ->
@db = new DB(db_host, db_username, '').connect(db_name)
@server = require('http').createServer (@request, @response) =>
@route request, (data) =>
@response.end data
route: (request, callback) ->
switch request.url
when "/" then @index (data) -> callback(data)
when "/new" then @new (data) -> callback(data)
when "/create" then @create (data) -> callback(data)
else @response.end 'Sayfa bulunamadı. <a href="javascript:window.history.back()">Geri</a>'
run: (@port) ->
@server.listen @port
console.log "http://127.0.0.1:#{@port}/ adresinde sunucu dinliyor"
index: (callback) ->
@db.query "SELECT * FROM entries", (results) =>
@response.writeHead 200, {'Content-Type': 'text/html; charset=utf-8'}
data += '<h3>Index</h3>'
data = "<table>"
data += "<tr><th>ID</th><th>Konu</th><th>Mesaj</th><th>Gönderme</th><th>Güncelleme</th>"
data += @create_entry_row result for result in results
data += "</table>"
data += '<a href="/new">Ekle</a>'
callback(data)
create_entry_row: (result) ->
created_at = new Date(result.created_at * 1000).formatted()
updated_at = new Date(result.updated_at * 1000).formatted()
"<tr><td>#{result.id}</td><td>#{result.subject}</td><td>#{result.content}</td><td>#{created_at}</td><td>#{updated_at}</td></tr>"
new: (callback) ->
@response.writeHead 200, {'Content-Type': 'text/html; charset=utf-8'}
data = '<form action="/create" method="POST">'
data += '<p><input type="text" placeholder="Konu" name="subject"></p>'
data += '<p><textarea placeholder="Mesaj" name="content"></textarea></p>'
data += '<p><input type="submit" value="Konu Ekle"></p>'
callback(data)
create: (callback) ->
d = ''
@request.on 'data', (data) ->
d += data
@request.on 'end', =>
post = require('querystring').parse(d)
now = Math.round(Date.now() / 1000)
@db.query "INSERT INTO entries (subject, content, created_at, updated_at) VALUES ('#{post.subject}','#{post.content}', #{now}, #{now})", (results) =>
@response.writeHead(302, { 'Location': '/' })
callback('')
class DB
constructor: (host, username, password = '') ->
@connection = require('mysql').createConnection
host : host,
user : username,
password : password,
connect: (database = 'test') ->
@connection.connect()
@connection.query 'USE ' + database, (err, rows, fields) ->
throw "HATA: Veritabanı '#{database}' bulunamadı" if err
@
disconnect: ->
@connection.end
query: (string, callback) ->
@connection.query string, (err, rows, fields) ->
throw err if err
callback(rows)
s = new Server
s.run(port)

coffee -c simple_node.coffeeBasit bir işlem için bayağı fazla bir kod. Hemen her şeyi kendiniz yapmak zorunda kalıyorsunuz. Bununla birlikte düşük seviyeli işlemleri yapabilmek uygulamanız üzerinde büyük bir kontrole sahip olmanızı sağlıyor ancak gerçekten başınızı ağrıtabilir. Bir framework kullanmadan Node.js ile web programlaması yapmak C ile bir site yazmak gibi. Dahası sürekli olarak asenkronize çalışan "callback" fonksiyonlarla uğraşmak başlangıçta aklınızı karıştırabilir. Samimi olmak gerekirse eğer bu örneği CoffeeScript ile hazırlama imkânım olmasaydı, bu kadar uğraşmazdım. Önceki mesajımda da belirttiğim gibi, bu işlemleri tam anlamıyla yerine getirebilecek bir framework olmadığı sürece, her ne kadar hızlı da olsa, Node.js ile web programcılığı yapmak pek mantıklı değil. Eğer araştırırsanız pek çok basit soket uygulaması bulabilirsiniz sanırım. Bu yüzden yazdığım örneğin bir web uygulaması üzerine olmasını tercih ettim. Uygulamanın detaylarını şu an anlatmayı gerekli görmüyorum. Araştırmak isteyen yazılımcılar zaten gerekli kaynakları bulabilir ve bu kodları da inceleyebilirler. Diğer yandan Node.js ile programlama yapmak istiyorsanız öncelikle gerekli Javascript bilgisine sahip olmalısınız. Bu açıdan zaten yeterli kaynağı bulabileceğinize inanıyorum.
Doğrusu bende eskisi gibi çok fazla foruma uğrayamıyorum. Bulduğum boşluklara makaleler sıkıştırıp paylaşmaya çalışıyorum.
var mongoose = require('mongoose');
var host = '127.0.0.1';
var database= 'veritabani_adi';
var mongoUser = 'root';
var mongoPass = 'password';
var uri = 'mongodb://' + host + '/' + database;
var options = {user:mongoUser,pass:mongoPass};
var db = mongoose.connect(uri,options).connection;Ayrıca bu tarz soruların cevabı mongoose dokümanında yer alıyor zaten. http://mongoosejs.com/docs/connections.html buradan bakarak detaylara ulaşabilirdin. Benzer bir metod hakkında yardıma ihtiyaç duyduğunda dokümantasyonu inceleyebilirsin.