我正在使用 Java DDPClient ( https://github.com/kutrumbo/java-ddp-client ),并且正在尝试将数据插入到 Meteor 应用程序中。
我是用java来做这个的:
DdpClient client;
try {
client = new DdpClient("localhost", 3000);
client.addObserver(this);
client.connect();
Object[] objArray = new Object[1];
objArray[0] = new String("{name:'peter andersson', phone:'12345678'}");
client.call("createNewCustomer", objArray);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (Exception ex) {
System.out.println("Exception:" + ex.getLocalizedMessage());
}
这在 Meteor 中(集合客户)
Meteor.methods({
"createNewCustomer" : function(options) {
var ret = {};
options.replace(/(\b[^:]+):'([^']+)'/g, function ($0, param, value) {
ret[param] = value;
});
Customers.insert(ret);
}
});
它可以工作,但是将其编码为字符串然后将其解码为 JavaScript HashMap 似乎是不必要的工作。
我尝试创建一个对象(字符串)数组,但无论我如何执行它都无法按预期工作。
“正确”的做法是什么?
编辑:
我的愿望是 Meteor 代码如下所示:
Meteor.methods({
"createNewCustomer" : function(options) {
Customers.insert(options);
}
});
我想我想知道的是如何从Java(使用Java DDP Client)发送,以便在Meteor中不需要解码。
最佳答案
正确的方法是使用 JSON.parse() 解码字符串。 只需确保该字符串是有效的 JSON 文档即可。
在你的java代码中将其更改为:
objArray[0] = new String("{\"name\":\"peter andersson\", \"phone\":\"12345678\"}");
您的 javascript 代码现在应如下所示:
Meteor.methods({
"createNewCustomer" : function(options) {
var ret = JSON.parse(options);
Customers.insert(ret);
}
});
附:另外,在 java 代码中,如果您想动态地执行此操作,您可能会考虑使用某些 JSON 库构造 JSON 字符串的可能性。
关于javascript - 从 Java 添加数据到 Meteor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34462723/