我正在学习 MEAN 堆栈环境,我有一个问题。
我有一个注册页面,在 MongoDB 中注册用户:
// register.component.ts
register(){
this.http.post('http://localhost:3001/register', this.input)
.subscribe(
( next: any) => {
// TO-DO Success event
},
( error: any) => {
// TO-DO Error event
});
}
// app.js
app.post('/register', function(req, res){
db.collection('users').insertOne({
prenom : req.body.prenom,
nom: req.body.nom,
email : req.body.email,
password : req.body.password
})
})
它工作得很好,问题是对于连接,我使用_id:
// login.component.ts
login(id: string){
this.http.get('http://localhost:3001/login/' + id).toPromise().then((data: any) => {
this.users = data
})
sessionStorage.setItem('id', id)
}
// app.js
app.get('/login/:id', function(req, res){
db.collection('users').findOne({ email: ObjectId(`${req.params.id}`)}, function(err, user){
if (err) throw err;
if (!user) {
console.log('User not found')
}
else if (user)
{
console.log('Found user: ' + user.prenom)
}
})
})
如何确保当用户注册时,它直接返回他的_id,这样我可以让他进入会话:
sessionStorage.setItem('id', id)
回答1
db.collection.insertOne()
函数返回插入的文档,参见https://www.mongodb.com/docs/manual/reference/method/db.collection.insertOne/。这意味着您可以为您的 insertOne()
函数执行回调或异步/等待(无论您喜欢哪个),然后使用 Express 函数 res.json()
返回 _id
。然后,在您的前端,您将获得放入 res.json()
的任何内容作为响应。快乐编码! :)