我希望能够从用户输入中设置字段名称和字段值。我正在创建一个网站,您可以在其中放置广告。广告可以是任何东西,所以我不能有预先定义的架构。所有广告都有共同的属性,例如标题,价格等。 我当时正在考虑在每个包含该特定产品详细信息的文档中创建一个数组。 这是我的广告模型:
title: String,
description: String,
isActive: {
type: Boolean,
default: false
},
region: {
type: mongoose.Schema.Types.ObjectId, ref: 'Region'
},
phoneNumber : String,
dateCreated: {
type: Date,
default: Date.now
},
category: {
type: mongoose.Schema.Types.ObjectId, ref: 'Category'
},
price: {
type: Number
},
details:[ {
name: String,
value: String
}]
在我的create Ad端点中,我希望能够发送一个包含该特定Ad的所有详细信息的数组。因此数组中的每个元素都将具有一个字段名和一个字段值。
e.g: fieldname: color, fieldvalue: black
fieldname: year, fieldvalue: 2015
在我的数据库中,我想要得到这个结果。
details: [
{color: black},
{year: 2015}
]
这甚至可能吗?如果是这样,我该怎么做?我正在使用nodejs和mongoose。 谢谢。
答案 0 :(得分:0)
当然。这个有可能。但是,请确保您要存储的任何动态字段都必须位于架构中。
Ex. f1: 'username', f1Value: 'xyz'
因此,这里的“用户名”需要在您的猫鼬模式中声明。除非您有分配为Obj或数组的“数据”键。然后,您可以为该密钥插入任何格式的任何内容。 然后,您可以获取值并为此创建Add Object,然后可以添加类似的值。
dataObj = [];
dataObj[0][keyName] = keyValue;
user = new User({
data: dataObj
});
user.save();
这只是一个演示示例。不要插入这样的动态记录。获得适当的请求并为该数据创建一个单独的循环。
希望这会有所帮助。