gpt4 book ai didi

node.js - 使用 Node.js 为 Ember 创建 API

转载 作者:搜寻专家 更新时间:2023-10-31 23:55:21 25 4
gpt4 key购买 nike

我用 Express.js 为 Ember.js 创建了一个 API,当我 curl 时一切正常,但在 Ember 应用程序上我遇到了一些奇怪的错误: enter image description here

这是我的 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");
});

您认为错误来自哪里?感谢您的帮助。

最佳答案

一些评论:

1) 你可能有拼写错误:

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

如果您的查询返回此属性,它应该是 title

2)你有:

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

nodejs 不会让您执行跨源查询,并且您的 Node 代码不提供客户端文件(Ember/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-data 预期的完全一致,在您的特定示例中,结果应该是:

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

希望对你有帮助,gluck。

关于node.js - 使用 Node.js 为 Ember 创建 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17949454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com