【问题标题】:mongoose getter and socket.io猫鼬 getter 和 socket.io
【发布时间】:2012-01-17 07:32:10
【问题描述】:

假设我有一个 Person 模型,并且 Person 的模式定义了一个电话号码的键和一个用于格式化的 getter。当我从数据库中找到一个文档并查看值:console.log(doc.phone) 时,我看到了一个格式正确的电话号码。当我通过 socket.io 传输文档时,客户端只能看到未格式化的手机版本。

确保客户看到格式正确的数据的最佳方法是什么?


console.log(doc.phone):

(555) 123-4567

console.log(doc):

{ phone: '5551234567', _id: 4ee1aa57053868bb13000002 }

我正在通过 socket.io 传输它们的数组,如下所示:

socket.emit('people', docs)

【问题讨论】:

  • 如何通过 socket.io 传输文档,也可以粘贴 console.log(doc.phone) 的输出吗?
  • 是的,我刚刚用代码和输出更新了问题。
  • 这真的很奇怪,但我不认为错误来自 Socket.IO,我认为你要么稍后格式化代码或类似的东西.. 检查你的代码
  • 是的,我发现它与 mongoose getter 的工作原理有关,与 socket.io 无关。

标签: mongodb node.js mongoose


【解决方案1】:

要回答我自己的问题,我必须像这样在架构上覆盖 toJSON:

PersonSchema.methods.toJSON = ->
  obj = @toObject()
  obj.phone = @phone
  obj

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 2021-06-01
    • 1970-01-01
    • 2012-12-14
    • 2016-02-07
    • 2017-06-07
    • 2015-05-19
    • 2015-10-23
    相关资源
    最近更新 更多