2013-07-30 90 views
3

的API我Express.js做了一個API Ember.js,當我蜷縮一切正常,但在灰燼應用程序我得到了一些奇怪的錯誤: enter image description here使用Node.js的創建灰燼

這裏是我的Node.js應用程序代碼:

var express = require('express'), http = require('http'); 
var app = express(); 
var mysql = require('mysql'); 

var connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'root', 
    password: '', 
    database: 'blog-api' 
}); 


connection.connect(); 

app.get('/', function(req, res) { 
    res.end('/'); 
}); 

app.get('/posts', function(req, res) { 
    connection.query('SELECT * FROM posts', function(err, rows, fields) { 
     res.send(JSON.stringify({ 
      posts: rows 
     }), 200); 
    }); 
}); 




http.createServer(app).listen(8080, function(){ 
    console.log("Express server listening on port 8080"); 
}); 

您認爲錯誤來自哪裏? 感謝您的幫助。

+0

作爲開始,你爲什麼不嘗試調試錯誤? EG:'function(err,rows,fields){if(err){console.error(err); }}' – badsyntax

+0

我試過你的解決方案,但沒有打印,所以錯誤不在節點端,我會發布我的餘燼代碼 – DCK

回答

2

幾點意見:

1)您可能有拼寫錯誤的:

App.Post = DS.Model.extend({ 
    titre: DS.attr('string'), 

它應該是title如果您的查詢返回此屬性。

2)您有:

app.get('/', function(req, res) { 
    res.end('/'); 
}); 

的NodeJS不會讓你執行跨起源查詢,您的節點代碼不服務於客戶端文件(恩伯/ JS /等),所以:

要麼允許跨域策略,你可以這樣做:

app.use(function (req, res, next) { 
     res.header("Access-Control-Allow-Origin", req.header('origin')); 
     res.header("Access-Control-Allow-Headers", "X-Requested-With"); 

     next() 
}) 

或通過res.render而不是res.end('/')滿足您的HTML文件。

3)如果客戶端文件服務的外部更好的改變URL爲完整的路徑,如:

http://localhost:8080

4)林不知道有關的結構由SQL查詢返回,但保證結果是完全一樣的Ember公司數據預計,在具體的例子,應該引起:

{"posts":[{"title":"Post1"},{"title":"Post2"}]}

希望它能幫助,格魯克。

+0

非常感謝!該錯誤只是我的REST適配器的URL,我用'http:// localhost:8080'替換了'localhost:8080',它正常工作。 – DCK

0

是的,你說得沒錯,這裏是Ember.js代碼:

EmberDemo.Router.map(function() { 
    this.resource('posts', function(){ 
    this.resource('post', {path: '/:post_id'}); 
    }); 
    this.route('about'); 
}); 


EmberDemo.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: DS.RESTAdapter.extend({ 
    url: 'localhost:8080' 
    }) 
}); 

EmberDemo.PostsRoute = Ember.Route.extend({ 
    model: function() { 
     return EmberDemo.Post.find(); 
    } 
}); 

EmberDemo.Post = DS.Model.extend({ 
    titre: DS.attr('string'), 
    description: DS.attr('string'), 
    contenu: DS.attr('contenu') 
});