Arrays 嵌套数组mongoose上的推/拉值
我正在尝试使用express更新mongoose模式中嵌套数组中的值。我已经准备好了我所需要的代码来更新它,但是数组没有得到更新 因此,我们的想法是能够拥有一个包含两个字段的数据库模式对象数组,即schemaName和schemaFields。我希望能够根据需要更新(添加/删除)特定模式对象的schemaFields字段中的值 我已经在这里和互联网上的其他地方尝试了很多东西,但似乎没有任何效果。我试着使用findOneAndUpdate、findbyi和update等 我的猫鼬模式如下:Arrays 嵌套数组mongoose上的推/拉值,arrays,mongoose,nested,Arrays,Mongoose,Nested,我正在尝试使用express更新mongoose模式中嵌套数组中的值。我已经准备好了我所需要的代码来更新它,但是数组没有得到更新 因此,我们的想法是能够拥有一个包含两个字段的数据库模式对象数组,即schemaName和schemaFields。我希望能够根据需要更新(添加/删除)特定模式对象的schemaFields字段中的值 我已经在这里和互联网上的其他地方尝试了很多东西,但似乎没有任何效果。我试着使用findOneAndUpdate、findbyi和update等 我的猫鼬模式如下: let
let databaseSchema = new Schema({
schemaName: { type: String },
schemaFields: [String]
});
let databaseSchemas = new Schema(
{
dbSchemas: [databaseSchema]
},
{
collection: 'databaseSchemas'
}
);
schemasModel.mongo
.update(
{
_id: req.body.documentId,
'dbSchemas._id': req.body.schemaId
},
console.log('preparin to push the field \n'),
{
$push: {
'dbSchemas.$.schemaFields': req.body.newField
}
}
)
.then(() => {
res.send('new field added successfully');
});
schemasModel.mongo
.update(
{
_id: req.body.documentId,
'dbSchemas.schemaName': req.body.schemaToSearch
},
{
$push: {
'dbSchemas.$.schemaFields': req.body.newField
}
}
)
.then(() => {
res.send('new field added successfully');
});
我的更新功能如下:
let databaseSchema = new Schema({
schemaName: { type: String },
schemaFields: [String]
});
let databaseSchemas = new Schema(
{
dbSchemas: [databaseSchema]
},
{
collection: 'databaseSchemas'
}
);
schemasModel.mongo
.update(
{
_id: req.body.documentId,
'dbSchemas._id': req.body.schemaId
},
console.log('preparin to push the field \n'),
{
$push: {
'dbSchemas.$.schemaFields': req.body.newField
}
}
)
.then(() => {
res.send('new field added successfully');
});
schemasModel.mongo
.update(
{
_id: req.body.documentId,
'dbSchemas.schemaName': req.body.schemaToSearch
},
{
$push: {
'dbSchemas.$.schemaFields': req.body.newField
}
}
)
.then(() => {
res.send('new field added successfully');
});
因此,我通过删除console.log()作为model.update()函数的第二个参数来解决这个问题。很显然,这就是这次行动的目标 Model.update函数的工作代码如下:
let databaseSchema = new Schema({
schemaName: { type: String },
schemaFields: [String]
});
let databaseSchemas = new Schema(
{
dbSchemas: [databaseSchema]
},
{
collection: 'databaseSchemas'
}
);
schemasModel.mongo
.update(
{
_id: req.body.documentId,
'dbSchemas._id': req.body.schemaId
},
console.log('preparin to push the field \n'),
{
$push: {
'dbSchemas.$.schemaFields': req.body.newField
}
}
)
.then(() => {
res.send('new field added successfully');
});
schemasModel.mongo
.update(
{
_id: req.body.documentId,
'dbSchemas.schemaName': req.body.schemaToSearch
},
{
$push: {
'dbSchemas.$.schemaFields': req.body.newField
}
}
)
.then(() => {
res.send('new field added successfully');
});