猫鼬会自动转换类型吗?

时间:2020-07-01 10:40:18

标签: javascript mongoose

当我使用此架构检索和修改大厅时,它似乎会自动转换类型。我找不到该功能的文档,所以我想知道是否误将其他东西用于自动广播。

我将密码和所有者的类型转换为truefalse,因为这是每个人都可以查看的公开的api端点。当我运行匿名程序功能时,它将运行并导致password : "true"而不是password: true。我希望它发送password: true,但不确定是否可行。

// Schema
const LobbySchema = new mongoose.Schema({
  name: String,
  password: String,
  owner: { type: String, require: true },
  Player: [],
});

// Anonymizer function
lobby.password = !!lobby.password;
lobby.owner = lobby.owner === user ? true: false;

res.send(JSON.stringify(lobby));

1 个答案:

答案 0 :(得分:1)

是的,如果可能的话,猫鼬会强制转换值。

这里的问题是您的架构将类型 owner 定义为 String。因此值 truefalse 将被转换为字符串。

这就是您得到 password : "true" 的原因。

要以布尔值形式获取密码,您可以将 Boolean 设置为架构或使用 Custom casting

未测试但遵循文档应该与此类似:

const originalCast = mongoose.Boolean.cast();
mongoose.Boolean.cast(v => {
  if (v === 'true') {
    return true;
  }
  if (v === 'false') {
    return false;
  }
  return originalCast(v);
});
相关问题