gpt4 book ai didi

javascript - 如何使用变量名创建字段?

转载 作者:可可西里 更新时间:2023-11-01 10:29:43 29 4
gpt4 key购买 nike

如何使用变量名在 mongoose 中创建字段?我已经看到一些使用 .update() 来做到这一点的方法,但我想知道在创建新文档时是否有办法做到这一点

我的架构如下:

var summariesSchema = mongoose.Schema({
type: String,
name: String,
date: String
})

和我的对象:

var date = '2015-02-01'
var obj = {
ios: 100,
android: 500
}
var doc = {}
doc[date] = obj
var mongoDoc = new Summaries({
name: 'John',
type: 'person',
date: date,
$doc: doc
})
mongoDoc.save(function(err){
if(!err) log('done')
else log(err.toString())
})

但它只保存字段“名称”、“类型”和“日期”。

谁能告诉我是否可以做这样的事情,如果可以,我错过了什么?

最佳答案

知道了..@Alex 的第一部分是正确的,只需将 schema strict 属性更改为 false,这样我就可以将新字段添加到我的 mongo 文档中。对于作为变量的字段名称,我只是首先创建了我的整个对象,然后创建了一个新的文档实例:

var summariesSchema = mongoose.Schema({
type: String,
name: String,
date: String
}, { strict: false })

var date = '2015-02-01'
var obj = {
name: 'John',
type: 'person',
date: date
}
obj[date] = {
ios: 100,
android: 500
}
var mongoDoc = new Summaries(obj)
mongoDoc.save(function(err){
if(!err) log('Done.')
else log(err)
}

成功!

编辑

三年后 ES6 语法也允许我们这样做:

var mongoDoc = await new Summaries({
name: 'John',
type: 'person',
date: date,
[date]: { ios: 100, android: 100 }
}).save();

关于javascript - 如何使用变量名创建字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28481535/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com