猫鼬使用浮动作为关键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猫鼬使用浮动作为关键相关的知识,希望对你有一定的参考价值。

我正在尝试使用浮点数作为mongodb数据库中的键,因为我必须存储每个货币值的相应数量(例如0.01:10)。但是当我尝试通过mongoose(使用express的节点服务器)保存数据时,它只使用db中的普通(字符串)键保存数据。

这是我的架构:

var ProtokollSchema = new Schema({
"date": String,
"0.01": {type: Number, default: 0},
"0.02": {type: Number, default: 0},
"0.05": {type: Number, default: 0},
"0.10": {type: Number, default: 0},
"0.20": {type: Number, default: 0},
"0.50": {type: Number, default: 0},
"1.00": {type: Number, default: 0},
"2.00": {type: Number, default: 0},
...

});

这是设置数据的express函数:

    .post(function(req, res) {
    var protokoll = new ProtokollSchema();
    protokoll["date"] = req.body["date"];
    protokoll["0.01"] = req.body.data["0.01"];
    protokoll["0.02"] = req.body.data["0.02"];
    protokoll["0.05"] = req.body.data["0.05"];
    protokoll["0.10"] = req.body.data["0.10"];
    protokoll["0.20"] = req.body.data["0.20"];
    protokoll["0.50"] = req.body.data["0.50"];
    protokoll["1.00"] = req.body.data["1.00"];
    protokoll["2.00"] = req.body.data["2.00"];
    ...

    protokoll.save(function(err) {
        if (err) res.json(err);
        res.json({ message: "Comment successfully added!"});
    });
})

有解决方案还是不可能?

答案
  1. 无论密钥字符串看起来像普通字符串,浮点数还是其他字符串,模式中的所有键都必须是字符串。
  2. 确保req.body.data真的具有{“0.01”:xxx,“0.02”:xxx,...}等值;
  3. 您应该使用Model来创建文档而不是Schema //wrong way var protokoll = new ProtokollSchema(); //Right way - Use the schema to generate a model and use model to new a docuemnt. var Protokoll = mongoose.model('Protokoll', ProtokollSchema); var protokoll = new Protokoll({"0.01": xxx, "0.02": xxx, ...});
另一答案

实际问题是MongoDB根本不支持其键中的点(参见this question)最初我认为问题是猫鼬的Schema,但显然不是。

以上是关于猫鼬使用浮动作为关键的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个活动中使用片段中的主要活动浮动操作按钮?

无法在 MongoDB(猫鼬)文档中追加数组

html 这个要点包含使用RightCare品牌创建浮动框的片段。

当我尝试在片段中显示或隐藏浮动操作按钮时出错

如何从片段外部清除/重置地图?

在猫鼬模式设计中使用新关键字