我在做什么::我正在尝试为数据库中的数据集生成 json 和 xml 输出
Express Code::我在这里尝试 JSON 响应
var express = require('express')
, async = require('async')
, http = require('http')
, mysql = require('mysql');
var xml = require('xml');
var app = express();
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'MyDatabase'
});
connection.connect();
// all environments
app.set('port', process.env.PORT || 3007);
app.use(express.static(__dirname + '/public/images'));
app.get('/Result/',function(request,response){
var name_of_restaurants;
async.series( [
// Get the first table contents
function ( callback ) {
connection.query('SELECT * FROM mas_buf_type', function(err, rows, fields)
{
console.log('Connection result error '+err);
name_of_restaurants = rows;
callback();
});
}
// Send the response
], function ( error, results ) {
response.json({'restaurants' : name_of_restaurants });
//response.set('Content-Type', 'text/xml');
//response.send(xml(name_of_restaurants));
} );
} );
http.createServer(app).listen(app.get('port'),function(){
console.log('Express server listening on port'+app.get('port'));
});
我的输出::
{
"restaurants": [
{
"Buf_Type_Id": 1,
"Buf_Type_Name": "Breakfast"
},
{
"Buf_Type_Id": 2,
"Buf_Type_Name": "Lunch"
},
{
"Buf_Type_Id": 3,
"Buf_Type_Name": "Dinner"
}
]
}
现在代替
response.json({'restaurants' : name_of_restaurants });
我添加了这些行以获得 XML输出
response.set('Content-Type', 'text/xml');
response.send(xml(name_of_restaurants));
输出::
<Buf_Type_Id>1</Buf_Type_Id>
<Buf_Type_Id>2</Buf_Type_Id>
<Buf_Type_Id>3</Buf_Type_Id>
我的问题::
var express = require('express')
, async = require('async')
, http = require('http')
, mysql = require('mysql');
var xml = require('xml');
var app = express();
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'findmybuffet'
});
connection.connect();
// all environments
app.set('port', process.env.PORT || 3007);
app.use(express.static(__dirname + '/public/images'));
app.get('/Result/',function(request,response){
var name_of_restaurants;
async.series( [
// Get the first table contents
function ( callback ) {
connection.query('SELECT * FROM mas_buf_type', function(err, rows, fields)
{
console.log('Connection result error '+err);
name_of_restaurants = rows;
callback();
});
}
// Send the response
], function ( error, results ) {
//response.json({'restaurants' : name_of_restaurants });
response.set('Content-Type', 'text/xml');
//response.send(xml(name_of_restaurants));
response.send(xml({restaurants:[
name_of_restaurants.map(function(r){
return [
{ Buf_Type_Id: r.Buf_Type_Id },
{ Buf_Type_Name: r.Buf_Type_Name },
]
})
]}));
} );
} );
http.createServer(app).listen(app.get('port'),function(){
console.log('Express server listening on port'+app.get('port'));
});
输出::
<restaurants>
<0>
<Buf_Type_Id>1</Buf_Type_Id>
<Buf_Type_Name>Breakfast</Buf_Type_Name>
</0>
</restaurants>
我们也清楚地看到<0>正在生成....这不是必需的...如何删除它?
最佳答案
因此,我四处寻找适合您的更好的对象到 XML 映射器。在找到我喜欢的一个之前,我尝试了三个(它易于使用,并且对您的应用程序有意义)。抛弃旧的,使用object-to-xml相反:
var o2x = require('object-to-xml');
response.set('Content-Type', 'text/xml');
response.send(o2x({
'?xml version="1.0" encoding="utf-8"?' : null,
restaurants: {
restaurant: name_of_restaurants
}
}));
关于xml - Expressjs 响应作为 JSON 和 Xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21399572/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一
我有一个非常简单的RubyRack服务器,例如:app=Proc.newdo|env|req=Rack::Request.new(env).paramspreq.inspect[200,{'Content-Type'=>'text/plain'},['Somebody']]endRack::Handler::Thin.run(app,:Port=>4001,:threaded=>true)每当我使用JSON对象向服务器发送POSTHTTP请求时:{"session":{"accountId":String,"callId":String,"from":Object,"headers":
当我创建一个Rails应用程序时,控制台:railsnewfoo我的代码可以使用字符串“foo”吗?puts"Yourapp'snameis"+app_name_bar 最佳答案 Rails.application.class将为您提供应用程序的全名(例如YourAppName::Application)。从那里您可以使用Rails.application.class.parent获取模块名称。 关于ruby-on-rails-应用程序的名称是否可以作为变量使用?,我们在StackOve
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
我在搜索我的值是方法的散列时遇到问题。我只是不想运行plan_type与键匹配的方法。defmethod(plan_type,plan,user){foo:plan_is_foo(plan,user),bar:plan_is_bar(plan,user),waa:plan_is_waa(plan,user),har:plan_is_har(user)}[plan_type]end目前如果我传入“bar”作为plan_type,所有方法都会运行,我怎么能只运行plan_is_bar方法呢? 最佳答案 这个变体怎么样?defmethod
在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.