NodeJS + Express + MongoDB(mongoose)でAPIビルドと通信する簡単なアプリケーションがあります。私の質問はAPI側に委ねられています。モンゴーススキーマの動的フィールドを更新する
私はMongoDBの中に格納し、ユーザーの設定にこのスキーマを使用します。
{
user: Number,
name: String,
lists: {
invoices: {
year: Number,
orderCol: String,
order: Number
}
}
}
}
ユーザーごとに1つだけの文書が格納値は年によってソートし、濾過し、請求書のリストを表示するには、私のフロントエンドアプリケーションで使用されること、があります。
ドキュメントを更新する必要がありますが、毎回1つのプロパティのみを更新する必要があります。たとえば、APIを呼び出すとorder
& orderCol
を変更せずにuser.lists.invoices.year
を2017に変更できるようにしたいと考えています。
リストのタイプ(invoices
)、変更するプロパティ(year
)と値(2017
)の3つの値をAPIに送信します。
// PUT request with this payload
{
list: 'invoices',
property: 'year',
value: 2017
}
私はuser
フィールドを使用してクエリしています。
router.put('/lists/:usr', (req, res, next) => {
var listData = req.body; // listData.list, listData.property, listData.year
var usr = req.params.usr;
Config.findOneAndUpdate(
{ user: usr },
{ $set: { ??? } },
{ new: true, upsert: true },
(err, config) => {
if (err) return next(err);
res.json({ data: config });
}
)
})
可能dupplicates用注:グーグルでの私の検索およびSO常に$
オペレータに私を導くが、それは、このためのソリューションだ場合、私は知らない、そしてどのような場合には、私が使用する方法がわかりませんこの場合はそれです。
私は正しいスキーマを設計していないかもしれません。この場合、私はアドバイスが必要です。
私にとっては完璧に機能します。説明をありがとう。 – mariogl