在流星错误中删除数组中的嵌入式 object
Removing Embedded object in array in meteor error
我在 Whosebug 和流星论坛上研究并看到了有关如何删除 mongodb/meteor 中嵌入文档的问题。但我不明白为什么 $pull 对我不起作用。
被这个问题困了好几天了。我有一个看起来像这样的 collection。
{
"_id": "N6QAJQpq4p5aYbpev",
"name": "Test Project",
"description": "description here",
"organization": "xPtaobSBQwxCKAJLN",
"members": [
{
"id": "3b7sbW3x487PzzJ6h",
"role": "manager",
"dateAdded": "2018-01-24T17:49:50.734Z"
},
{
"id": "n72PveQmdjcsvv5t5",
"role": "manager",
"dateAdded": "2018-01-24T17:49:53.545Z"
},
{
"id": "dSqzezqQjrzLeSTEw",
"role": "manager",
"dateAdded": "2018-01-24T17:50:11.177Z"
}
]
}`
我更新记录的方法:
removeUserFromProj: (projId, memberId) =>{
Projects.update({ _id: projId }, {
$pull: { "members": { id: memberId } }
// $pull: { "members.id": memberId }
},
function (error, success) {
if (error) {
console.log('error: ', error);
}
if (success) {
console.log('updating user role: ' + success);
}
});
}
回调函数成功了
但是 collection 没有更新。
如果我使用这种语法 // $pull: { "members.id": memberId }
它给我这个错误说:
simulating the effect of invoking 'removeUserFromProj' Error: After filtering out keys not in the schema, your modifier is now empty
我也尝试过使用 $pop 而不是 $pull。它正在删除我的 collection 中的最后一条记录。
我正在使用 meteor SimpleSchema。
找到我的错误。似乎我架构中的 autoValue 属性 阻止我更新我的
OrganizationSchema = new SimpleSchema({
name: {
type: String,
label: "Organization Name"
},
createdAt: {
type: Date,
autoValue: function(){
return new Date()
}
},
createdBy:{
type: String
},
members: {
type: [Member],
optional: true
}
});
将自动值 属性 更改为
createdAt: {
type: Date,
autoValue: function(){
return new Date()
}
}
默认属性 解决了我的问题:
createdAt: {
type: Date,
defaultValue: new Date()
},
我在 Whosebug 和流星论坛上研究并看到了有关如何删除 mongodb/meteor 中嵌入文档的问题。但我不明白为什么 $pull 对我不起作用。
被这个问题困了好几天了。我有一个看起来像这样的 collection。
{
"_id": "N6QAJQpq4p5aYbpev",
"name": "Test Project",
"description": "description here",
"organization": "xPtaobSBQwxCKAJLN",
"members": [
{
"id": "3b7sbW3x487PzzJ6h",
"role": "manager",
"dateAdded": "2018-01-24T17:49:50.734Z"
},
{
"id": "n72PveQmdjcsvv5t5",
"role": "manager",
"dateAdded": "2018-01-24T17:49:53.545Z"
},
{
"id": "dSqzezqQjrzLeSTEw",
"role": "manager",
"dateAdded": "2018-01-24T17:50:11.177Z"
}
]
}`
我更新记录的方法:
removeUserFromProj: (projId, memberId) =>{
Projects.update({ _id: projId }, {
$pull: { "members": { id: memberId } }
// $pull: { "members.id": memberId }
},
function (error, success) {
if (error) {
console.log('error: ', error);
}
if (success) {
console.log('updating user role: ' + success);
}
});
}
回调函数成功了
但是 collection 没有更新。
如果我使用这种语法 // $pull: { "members.id": memberId }
它给我这个错误说:
simulating the effect of invoking 'removeUserFromProj' Error: After filtering out keys not in the schema, your modifier is now empty
我也尝试过使用 $pop 而不是 $pull。它正在删除我的 collection 中的最后一条记录。
我正在使用 meteor SimpleSchema。
找到我的错误。似乎我架构中的 autoValue 属性 阻止我更新我的
OrganizationSchema = new SimpleSchema({
name: {
type: String,
label: "Organization Name"
},
createdAt: {
type: Date,
autoValue: function(){
return new Date()
}
},
createdBy:{
type: String
},
members: {
type: [Member],
optional: true
}
});
将自动值 属性 更改为
createdAt: {
type: Date,
autoValue: function(){
return new Date()
}
}
默认属性 解决了我的问题:
createdAt: {
type: Date,
defaultValue: new Date()
},