2016-10-19 16 views
1

私はすべてのクリックイベントをMongooseの配列に保存したいと思います。配列がない場合は、それを作成します。 現時点では、オブジェクト{x:954、y:256}、{x:254、y:156}として保存されます。 私に必要なのは、{{x:954、y:256}、{x :254、Y:ここで、156}]Mongooseの配列にデータを保存するには?

は私のコードは次のとおり

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(); 
}; 

を保存次に、コントローラは、私はこれを呼び出していますaddPoint funct ion from app.js

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

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

あなたには何か提案がありましたら無料でご提供ください。

答えて

2

スキーマの更新を次のように -

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(); 
    } 
    } 
}); 

機能を救う提案 - ユーザセッションに基づいてクリック数を保管したり、クライアント

+0

おかげAを区別するために、いくつかの識別子を使用してロット。今は期待どおりに動作します。 「ユーザーセッションに基づいて」ということを教えてください。セッションまたはログインの詳細でデータベース内のデータをグループ化するには? – Octtavius

関連する問題