-1

I'm making an app with express and 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
    

When I make a post request to add a new user, it doesn't save anything and I can't think of any reason why. Any ideas?

4

1 回答 1

0

document.save()是异步的,因此returndbService.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
于 2013-07-22T18:15:58.387 回答