我正在使用express和mongoose制作应用,https://github.com/findjashua/express_app
app.coffee
app.post '/user', user.add
models/user.coffee
createUser = (req) ->
user = new User
name : req.body.name
email : req.body.email
phone : req.body.phone
return user
# ...
exports.add = (req, res) ->
user = createUser req
res.send dbService.save(user)
services/db.coffee
exports.save = (document)->
document.save (err)->
if err
console.log err
return document
当我发布添加新用户的帖子请求时,它不会保存任何内容,我想不出任何理由。有任何想法吗?
答案 0 :(得分:0)
document.save()
是异步的,因此return
中的dbService.save()
实际上不是一个选项。
res.send()
之前,return document
已经完成。document
返回给调用回调的代码,该回调位于document.save
内,而不是user.coffee
内的代码。您需要调整dbService.save()
以接受回调,以便res.send()
完成document
:
exports.save = (document, callback) ->
document.save (err, document) ->
if (err)
callback(err)
else
callback(null, document)
exports.add = (req, res) ->
user = createUser req
dbService.save user, (err, user) ->
res.send err ? user
注意:第一个代码段可以简化,具体取决于.save()
是否需要执行其他操作:
exports.save = (document, callback) ->
document.save callback