如何使用变量名创建字段?
How to create field using variable name?
如何使用变量名在 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())
})
但它只保存字段 'name'、'type' 和 'date'。
任何人都可以告诉我是否可以做这样的事情,如果可以,我错过了什么?
将您的架构定义更改为
var summariesSchema = mongoose.Schema({
type: String,
name: String,
date: String
}, { strict: false })
知道了..
@Alex 的第一部分是正确的,只需将模式严格 属性 更改为 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();
如何使用变量名在 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())
})
但它只保存字段 'name'、'type' 和 'date'。
任何人都可以告诉我是否可以做这样的事情,如果可以,我错过了什么?
将您的架构定义更改为
var summariesSchema = mongoose.Schema({
type: String,
name: String,
date: String
}, { strict: false })
知道了.. @Alex 的第一部分是正确的,只需将模式严格 属性 更改为 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();