gpt4 book ai didi

node.js - 如何在 Mongoose 中将数据保存到数组中?

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:17 25 4
gpt4 key购买 nike

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

这是我的代码:

click模型架构

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

这是保存数据的 Controller

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

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

最佳答案

按如下方式更新架构 -

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

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

关于node.js - 如何在 Mongoose 中将数据保存到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40134711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com