fun*_*eah 2 javascript mongodb meteor minimongo
我有一个Meteor方法,我从客户端调用,然后更新单个文档中的所有字段.在下面的最后一行代码中,我尝试立即在客户端上运行相同的更新以获得直接的副作用(它假设更新将通过).我得到的麻烦是:
更新失败:访问被拒绝.在受限制的集合中,您只能更新文档,而不能替换它们.使用Mongo更新运算符,例如'$ set'
当试图这样做.我不想更新单个字段,我想更新整个文档.有没有办法正确地做到这一点?
entry = {
title: title
text: text
tags: entry.tags
mode: $('#mode').val()
file_ids: entry.file_ids
}
eid = Session.get('entryId')
entry._id = eid if eid
context = Session.get('context')
Meteor.call('saveEntry', title, entry, context)
Entries.update({_id: entry._id}, entry)
Run Code Online (Sandbox Code Playgroud)
做类似的事情:
Entries.update({_id: entry._id}, { $set: entry })
Run Code Online (Sandbox Code Playgroud)
典型的更新请求在表单上:
Collection.update(
<query>,
<update>
)
Run Code Online (Sandbox Code Playgroud)
从Mongodb文档中,关于使用常规键更新:value对象:
完全替换文档
如果文档仅包含field:value表达式,则:
- update()方法将匹配的文档替换为文档.update()方法不替换_id值.有关示例,请参阅替换所有字段.
- update()无法更新多个文档.
而有关更新的具体领域,使用$set
,$inc
等:
更新特定字段
如果文档包含更新运算符表达式,例如使用$ set运算符的表达式,则:
- 该文档必须仅包含更新运算符表达式.
- update()方法仅更新文档中的相应字段.有关示例,请参阅更新特定字段.
另外,据我所知,从您的错误消息Meteor不允许从客户端完全替换整个文档.因此,一个选项是使用$set
运算符并设置所有值,在本例中是整个文档本身.您可能通常会_id
在将文档传递给$set
操作员之前跳过将其添加到文档中.
归档时间: |
|
查看次数: |
1170 次 |
最近记录: |