Meteor:我如何保存到集合并从中获取数据
Meteor: How do I save to a collection and getdata out of it?
我正在尝试制作两个函数。Save()应该检查该用户是否有现有文档,如果有,则用新文档更新他的保存,如果没有,则使用用户的唯一id作为文档唯一id插入新文档。Load()应该检查是否存在具有用户Id的现有保存并加载它。我完全是新手,这是我得到的错误
未捕获错误:不允许。不受信任的代码只能更新ID文件[403]
我知道这是因为更新和插入的工作方式。但我想在文档中使用用户唯一的iD,因为它看起来很简单。
function Save() {
if (Meteor.userId()) {
player = Session.get("Player");
var save = {
id: Meteor.userId(),
data = "data"
};
console.log(JSON.stringify(save));
if (Saves.find({id: Meteor.userId()})){
Saves.update( {id: Meteor.userId()}, {save: save} )
console.log("Updated saves")
}
else {
Saves.insert(save)
}
console.log("Saved");
}
}
function Load(){
if (Meteor.userId()){
if (Saves.find(Meteor.userId())){
console.log(JSON.stringify(Saves.find(Meteor.userId()).save.player));
player = Saves.find(Meteor.userId()).save.player;
data= Saves.find(Meteor.userId()).save.data
}
}
}
对象/文档id
-字段称为_id
。看这里!
当您尝试更新客户端上的现有对象/文档时,会发生错误。您总是需要传入对象_id
以从客户端代码更新对象/文档。请注意,您总是试图传递id
,而不是_id
!
所以这样试试吧:
function Save() {
if (Meteor.userId()) {
player = Session.get("Player");
var save = {
_id: Meteor.userId(),
data = "data"
};
console.log(JSON.stringify(save));
if (Saves.find({_id: Meteor.userId()})){
Saves.update( {_id: Meteor.userId()}, {save: save} )
console.log("Updated saves")
}
else {
Saves.insert(save)
}
console.log("Saved");
}
}
还要注意,Load()
函数可以工作,因为Collection.find()
使用您作为文档的_id
传递的字符串。
希望有帮助!
相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Meteor-将选定窗体中的对象添加到集合中
- JSON重构(合并内容)与javascript
- 主干集合重置和解析
- 使用数据上的角度更改设置集合的第一个元素的动画
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- Lodash从集合创建集合
- 如何合并不同集合的游标并按日期排序
- 如何使用javascript将两个dom元素集合合并到第三个集合中
- 主干集合 - 在集合级别合并两个集合
- 合并两个集合在 mongodb 中没有地图减少....
- 将两个集合合并为一个集合
- 合并ES6地图/集合的最简单方法
- Enyo集合合并策略
- 合并并聚合具有相同架构mongodb的两个或多个集合的某些字段
- Mongojs从两个集合中提取数据并合并结果
- 同一集合的流星合并游标
- 合并两个backbone.js集合(外部连接)