如何将数据保存到Mongoose中的数组?
我想存储每个点击事件到Mongoose中的数组,如果没有任何数组,那么它会为我创build一个。 目前它简单地保存为对象即{x:954,y:256},{x:254,y:156}我需要的是这样的[{x:954,y:256},{x:254 ,y:156}]
这是我的代码:
clickModel Schema
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); });
如果您有任何build议,请随时提供。
更新架构如下 –
var clickPoint = new Schema({ clicks: [ x: { type: SchemaTypes.Double }, y: { type: SchemaTypes.Double }, value: { type: Number, integer: true } ] });
更新保存function
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(); } } });
build议 – 根据用户会话存储点击或使用一些标识符来区分客户端