【发布时间】:2021-05-15 10:24:27
【问题描述】:
我有一个如下所示的用户架构:
const userSchema = new Schema({
email: {
type: String,
required: true,
unique: true,
trim: true
},
password: {
type: String,
required: true
},
role: {
type: String,
default: 'customer',
enum: ['customer', 'farmer', 'admin']
},
user_id: {
type: Schema.Types.ObjectId,
required: true,
unique: true
}
})
此外,我还有另一个架构,称为“客户”,看起来像这样:
const customerSchema = new Schema({
company: String,
contact: String,
...etc
})
现在我想做的是创建用户文档,创建并保存一个新的客户文档,然后将它的 _id 保存到我的用户文档的 user_id 字段。
发布请求如下所示:
// POST - USER REGISTRATION
router.post('/register', function (req, res) {
const { email, password, role } = req.body
const user = new User({ email, password, role,
user_id: new Customer({
company: req.body.company,
contact: req.body.contact,
...etc (rest of data)
})})
user.save(function(err) {
if (err) {
res.status(500)
.send("Failed to register. Please try again.")
}
else {
res.status(200).send("Registered.")
}
})
})
虽然这似乎创建了一个客户对象(在 user_id 下有一个 ObjectID),但客户并没有保存到数据库中(自然是因为没有调用 .save)。 我最初的方法是将 user_id 变量设置为 null,然后让客户创建并保存自己,然后将 user_id 变量设置为 customer._id 值,但这不起作用 user.save(func(err))会有一个“空”的 user_id 值。
【问题讨论】:
标签: javascript node.js mongodb express mongoose