Javascript 如何将已创建的联系人分配给Mongoose中的当前用户?
我正在尝试创建一个联系人,该联系人被推送到当前用户的联系人数组中 我的控制器目前只创建一个普通的联系人,而不是特定于用户的 控制器:Javascript 如何将已创建的联系人分配给Mongoose中的当前用户?,javascript,node.js,express,mongoose,mean-stack,Javascript,Node.js,Express,Mongoose,Mean Stack,我正在尝试创建一个联系人,该联系人被推送到当前用户的联系人数组中 我的控制器目前只创建一个普通的联系人,而不是特定于用户的 控制器: function contactsCreate(req, res) { Contact .create(req.body) .then(contact => res.status(201).json(contact)) .catch(() => res.status(500).json({ message: 'Someth
function contactsCreate(req, res) {
Contact
.create(req.body)
.then(contact => res.status(201).json(contact))
.catch(() => res.status(500).json({ message: 'Something went wrong'}));
}
const contactSchema = new Schema({
firstName: String,
lastName: String,
email: String,
job: String,
address: String,
number: Number
});
联系方式:
function contactsCreate(req, res) {
Contact
.create(req.body)
.then(contact => res.status(201).json(contact))
.catch(() => res.status(500).json({ message: 'Something went wrong'}));
}
const contactSchema = new Schema({
firstName: String,
lastName: String,
email: String,
job: String,
address: String,
number: Number
});
用户型号:
const userSchema = new mongoose.Schema({
username: { type: String, unique: true, required: true },
email: { type: String, unique: true, required: true },
passwordHash: { type: String, required: true },
contacts: [{ type: mongoose.Schema.ObjectId, ref: 'Contact' }]
});
假设您可以访问请求对象上的用户名,类似这样的操作应该可以:
async function contactsCreate(req, res) {
const username = request.User.username
try {
const newContact = await Contact.create(req.body)
const user = await User.findOne({username})
user.contacts.push(newContact)
await user.save()
return res.status(201).json(contact)
} catch ( err ) {
return res.status(500).json({ message: 'Something went wrong'})
}
}
谢谢你在上面的懒象。解决方案(经过调整)是:
这取决于您如何进行身份验证。您是否可以访问passport中的用户信息?我相信是的,我正在使用ExpressJWT和bcryptThank,我在下面稍微调整了一下您的答案