我正在尝试插入到我的集合中,它确实插入了,但是子文档没有被保存,我不知道为什么。
我有计划/模型:
import { Schema, Document, Model, model } from 'mongoose'
export interface IPerson {
name: {
first: string
last: string
}
dob: Date
}
export interface IPersonModel extends IPerson, Document { }
let nameSchema: Schema = new Schema({
first: String,
last: String
})
let PersonName = model('PersonName', nameSchema)
export var personSchema: Schema = new Schema({
name: { child: PersonName.schema },
dob: Date
}, { timestamps: true })
export const Person: Model<IPersonModel> = model<IPersonModel>('Person', personSchema, 'people')
我使用express传递数据并使用模型,如下所示:
import * as bodyParser from 'body-parser'
app.use(bodyParser.json())
app.post('/save/:type', async (req, res) => {
if (!req.xhr) res.sendStatus(400)
let p = new Person({
name: {
first: req.body.first,
last: req.body.last
},
dob: new Date()
})
p.save((err, data) => {
if (err) console.log(err);
else console.log('Saved : ', data);
})
res.sendStatus(200)
})
当我保存时,我得到以下输出到终端:
Saved : { __v: 0,
updatedAt: 2017-07-02T14:52:18.286Z,
createdAt: 2017-07-02T14:52:18.286Z,
dob: 2017-07-02T14:52:18.272Z,
_id: 595908a27de708401b107e4b
}
那么,为什么我的孩子name
没有得救?
答案 0 :(得分:0)
好的,我需要做的就是将child
更改为type
,如下所示:
name: { child: PersonName.schema }
到
name: { type: PersonName.schema }
通过传递模式,这也创建了一个_id
,所以我能够通过传递一个模式来改变它,只需传递一个这样的对象:
name { type: { first: String, last: String } }