我正在使用mongoose和nodejs,我需要创建一个动态模式模型, 这是我的代码:
schema.add({key : String});
key =" user_name",但在我的数据库中我发现该模型将其视为关键
{ key : "Michele" } and not { user_name: "Michele"}
我该怎么办?谢谢。
答案 0 :(得分:2)
同样的问题schema with variable key
在mongoose中讨论,
目前不可能。最近的替代方法是使用
strict: false
或mixed
架构类型。
答案 1 :(得分:0)
如果我的理解正确,您想为架构中的add
动态生成一个新列key
。例如。可能是每个用户的帖子集合,其中帖子的标题是关键。如果用户创建了新帖子,则会将其添加到他的收藏集中,并带有密钥作为其帖子的标题。
最初的时间
let schema = new Schema({ id: String, ... , key: String })
猫鼬从字面上取了key
,就像从字面上取了id
一样。
之所以不能将键动态添加到模式的根目录,是因为猫鼬无法保证任何结构。您也可以像其他人建议的那样strict: false
来使整个模式成为自由格式。
但是,如果您不想使整个模式成为自由格式,而只是其中的一部分,则还可以修改模式以使用mixed
let schema = new Schema({ id: String, ... , posts: Schema.Types.Mixed })
现在,您可以将所有动态生成的密钥保存在自由格式的posts
下。
您也可以使用map进行上述操作:
let schema = new Schema({ id: String, ... , posts: {type: Map, of: String} })
这将允许您在posts
结构内创建任何键值对。
答案 2 :(得分:0)
您可以这样做:
posts: { type: Object }
在内部发布键中,您可以实现任何想要的键值对
答案 3 :(得分:0)
const options = {};
options[key] = String;
schema.add(options);