如何将数据保存到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议 – 根据用户会话存储点击或使用一些标识符来区分客户端