我正在尝试使用流星从mongodb中获取一个json对象,但我不知道为什么我无法这样做。
我需要它只是一个JSON对象。
该系列的其中一个条目如下所示:
[从Meteor Dev Tools拍摄的图像]
链接:https://i.stack.imgur.com/BxRmS.png
我正在尝试通过传递名称来获取值部分。
前端代码:
export default withTracker(() => {
let aSub = Meteor.subscribe(‘allEntries’);
return {
aBoundaries: DataCollection.find({}).fetch()
}
})(Component Name);
前端的Meteor Call Statement: dataFromDb = Meteor.call('functionToBeCalled','Sydney');
服务器端代码:
Meteor.publish(‘allEntries’, function(){
return DataCollection.find();
});
Meteor.methods({
functionToBeCalled(aName){
return DataCollection.find({name: aName});
}
});
我的另一个问题是: 有没有什么方法我们只发布开头的所有名称,然后按需发布值?
提前感谢您的帮助!
我也试过这个,但它不起作用:
functionToBeCalled(aName){
var query = {};
query['name'] = aName;
return DataCollection.find(query).fetch();
}
答案 0 :(得分:1)
问题似乎与查询有关。
Collection.find()
以光标返回数据。
要获取对象数组,请使用Collection.find().fetch()
。 jsons作为[{json1}, {json2}]
之类的数组集合返回。
如果有单个文档,则可以使用Collection.find().fetch()[0]
访问json。另一种方法是使用findOne。示例 - Collection.findOne()
。这将返回一个JSON对象。
答案 1 :(得分:0)
使用Meteor.subscribe('allEntries')
,不要将其分配给变量。
Meteor.subscribe
是异步的,您最好在获取数据之前确保订阅准备就绪。
将DataCollection.find({}).fetch()
记录到您的控制台
查看此官方参考https://docs.meteor.com/api/pubsub.html#Meteor-subscribe。
你的第二个问题不是很清楚。
答案 2 :(得分:0)
以防有人来这里寻找答案~~~ 所以...我能够在服务器上使用此代码:
Meteor.methods({
functionToBeCalled(aName){
console.log(aName);
return DataCollection.findOne({name: aName});
}
});
这在客户端:
Meteor.call('functionToBeCalled', nameToBePassed, (error,response) => {
console.log(error, "error");
console.log(response, "response"); //response here
})
感谢您的帮助!