Mongoosevariables键名
我有一个mongo
对象,并希望通过mongoose
访问我的web应用程序。 我定义的模式有一个Object
存储用户ID和一个三级值(是的,也许或不)。
例如
"user_info": { "<id_value_1>": "y", "<id_value_2>": "n" }
上面的id_value_*
s是用户会话ID,所以是一串长长的随机字符。 我如何创build一个mongoose
Schema
呢?
-
user_info: {String, String}
工作? -
我可以重构它,以便
user_info
是一个对象数组{ "sessionid": "<value>", "value: "y"}
,这将是好的,这是最好的select?
如果您避免在您的模式中使用dynamic密钥,那么您将会变得更好,并采用您的第二个想法:
user_info: [{sessionid: String, value: String}]
您可以使用$
位置运算符通过sessionid
更新单个user_info
数组元素。
您可以尝试使用这种方式混合模式types
var user = new Schema({ info: [Schema.Types.Mixed] }); user.info = { any: { thing: 'i want' } }; user.markModified('info');
你可以在这里阅读更多
经过上面的testing之后,我发现将模式定义为user_info: { String: String }
是一种有效的方法(在问题中指定了选项1)。
您可以在模式中定义对象和数组。 你甚至可以把它们结合起来 例如,这是一个对象数组:
var user = new Schema({ foo: [ { address: {type: String}, email: {type: String, unique: true} }], bar: [ "simple", "array" ] });