【发布时间】:2018-01-24 14:16:24
【问题描述】:
我正在开发一个 MEAN 堆栈应用程序,在该应用程序中我使用以下模式定义了一个模型:
var mappingSchema = new mongoose.Schema({
MainName: String,
Addr: String,
Mapping1: [Schema1],
Mappings2: [Schema2]
},
{collection : 'Mappings'}
);
我在 UI 上显示所有这些数据,Mapping1 和 Mapping2 显示在两个表中,我可以在其中编辑值。我想要做的是,一旦我更新了表中的值,我应该在数据库中更新它们。我写了put() api,在那里我以对象的形式获取这两个更新的映射,但无法在数据库中更新它。我尝试使用findAndModify() & findOneAndUpdate() 但失败了。
以下是 Schema1 和 Schema2:
const Schema1 = new mongoose.Schema({
Name: String,
Variable: String
});
const Schema2 = new mongoose.Schema({
SName: String,
Provider: String
});
还有我的put api:
.put(function(req, res){
var query = {MainName: req.params.mainname};
var mapp = {Mapping1: req.params.mapping1, Mapping2: req.params.mapping2};
Mappings.findOneAndUpdate(
query,
{$set:mapp},
{},
function(err, object) {
if (err){
console.warn(err.message); // returns error if no matching object found
}else{
console.log(object);
}
});
});
请建议更新这两个数组的最佳方式。
更新: 我试过这个
var mapp = {'Mapping2': req.params.mapping2};
Mappings.update( query ,
mapp ,
{ },
function (err, object) {
if (err || !object) {
console.log(err);
res.json({
status: 400,
message: "Unable to update" + err
});
} else {
return res.json(object);
}
});
我的大小为 3 的数组在 Mapping2 数组中保存为字符串。
请帮忙。卡得很厉害。 :(
【问题讨论】:
标签: javascript angularjs node.js mongodb mean-stack