【问题标题】:How to save data to an array in Mongoose?如何将数据保存到 Mongoose 中的数组?
【发布时间】:2016-10-19 22:55:02
【问题描述】:

我想将每个点击事件存储到 Mongoose 中的一个数组中,如果没有任何数组,那么它将为我创建一个。 目前它只是保存为对象,即 {x: 954, y: 256}, {x: 254, y: 156} 我需要的是这样的 [{x: 954, y: 256}, {x: 254, y: 156}]

这是我的代码:

clickModel 架构

enter code var mongoose = require('mongoose');
require('mongoose-double')(mongoose);
var Schema = mongoose.Schema;
var integerValidator = require('mongoose-integer');
var SchemaTypes = mongoose.Schema.Types;

var clickPoint = new Schema({
    x: {
        type: SchemaTypes.Double
    },
    y: {
        type: SchemaTypes.Double
    },
    value: {
        type: Number,
        integer: true
    }
});

clickPoint.plugin(integerValidator);

//export model...
module.exports = mongoose.model("ClickPoint", clickPoint);

这里是保存数据的控制器

var ClickPoint = require('../Models/point');

exports.addPoint = function (click) {
    var entry = new ClickPoint({
        x: click.x,
        y: click.y,
        value: click.value
    });

    entry.save();
};

然后我从 app.js 调用这个 addPoint 函数

var clickPoint = require('./controllers/clickPoint.controller');

app.post('/clickPoint', function (req, res) {
    clickPoint.addPoint(req.body);
});

如果您有任何建议,请随时提出。

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-schema


    【解决方案1】:

    按如下方式更新 Schema -

    var clickPoint = new Schema({
      clicks: [
        x: {
          type: SchemaTypes.Double
        },
        y: {
          type: SchemaTypes.Double
        },
        value: {
          type: Number,
          integer: true
        }
      ]
    });
    

    更新保存功能

    ClickPoint.findOne(function(err, data) {
      if (!err) {
        if (data) {
          data.clicks.push({
            x: click.x,
            y: click.y,
            value: click.value
          })
          data.save();
    
        } else {
          new ClickPoint({
            clicks: [{
              x: click.x,
              y: click.y,
              value: click.value
            }]
          });
    
          entry.save();
        }
      }
    });
    

    建议 - 根据用户会话存储点击或使用一些标识符来区分客户端

    【讨论】:

    • 非常感谢。它现在按预期工作。你能告诉我你的意思是“基于用户会话”吗?按会话或登录详细信息对数据库中的数据进行分组?
    猜你喜欢
    • 1970-01-01
    • 2017-07-27
    • 2016-12-26
    • 1970-01-01
    • 2022-01-22
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多