gpt4 book ai didi

javascript - 将 JSON 数组添加到 Mongoose 模式 (JavaScript)

转载 作者:行者123 更新时间:2023-12-02 15:19:07 25 4
gpt4 key购买 nike

我正在创建一个 Android 应用程序(棒球应用程序),其中使用 MongoDB 来存储我的数据。我希望将 JSON 数据存储到数据库中的方式是这样的。

{"email@domain.com":{
"coachName": "Smith"
players:[
player1:{
"throws_":"n\/a",
"position":"position not set",
"number":"1",
"playerNum":"H8E83NxRo6",
"bats":"n\/a",
"team_name":"Team",
"name":"Name"}
player2:{
"throws_":"n\/a",
"position":"position not set",
"number":"1",
"playerNum":"H8E83NxRo6",
"bats":"n\/a",
"team_name":"Team",
"name":"Name"}
]
}

很抱歉,如果有任何语法错误,但本质上这就是我想要的 JSON 布局。其中 mongo 页面“id”是该人的电子邮件。其中“球员”是教练拥有的球员列表的数组。我的问题是,我该怎么办

  1. 正确地将 Mongoose 架构设置为如下所示?

  2. 当应用发送JSON数据时,我如何解析它来存储数据?

  3. 如果可能的话(如果没有人可以,我会尝试自己计算这部分)如果一次添加多个玩家,如果数组中已经有玩家,我该如何存储它们?

所有这些都是后端/服务器端,我的 Android 工作正常,我只需要帮助将其存储为 JavaScript 中的样子。

最佳答案

  1. 您不想使用动态变量作为字段名称。我说的是您的电子邮件“email@domain.com”。这不太好,因为你将如何找到该对象。通过字段搜索对象并不常见,您可以使用字段名称来描述您要查找的内容。您将需要 2 个模型。一份给球员,一份给教练。 Coach 在其 Players 数组字段中引用一个 Player。
  2. 如果您的 JSON 格式正确,则无需进行任何解析,只需确保您发送的 JSON 格式正确即可。
  3. 查看 addPlayer 函数。

Controller 文件(回答问题 2 和 3)

create = function(req, res) {
var coach = new Coach(req.body);
coach.user = req.user;

coach.save(function(err) {
if (err) {
return res.status(400).send({
// Put your error message here
});
} else {
res.json(coach);
}
});
};

read = function(req, res) {
res.json(req.coach);


};

addPlayer = function(req, res) {
var coach = req.coach;
console.log('updating coach', req.coach);
var player = new Player(req.newPlayer);
coach.players.push(newPlayer);

coach.save(function(err) {
if (err) {
return res.status(400).send({
// Put your error message here
});
} else {
res.json(coach);
}
});
};



玩家

'use strict';

/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Schema = mongoose.Schema;

/**
* Player Schema
*/
var PlayerSchema = new Schema({
created: {
type: Date,
default: Date.now
},
throws: {
type: Number,
},
name: {
type: String,
default: '',
trim: true
},
position: {
type: String,
default: '',
trim: true
},
playerNum: {
type: String,
default: '',
trim: true
},
position: {
type: Number,
default: 0,
trim: true
},
teamName: {
type: String,
default: '',
trim: true
}
});

mongoose.model('Player', PlayerSchema);

教练架构

'use strict';

/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Schema = mongoose.Schema;

/**
* Coach Schema
*/
var CoachSchema = new Schema({
created: {
type: Date,
default: Date.now
},
email: {
type: String,
unique: true,
lowercase: true,
trim: true,
default: ''
},
name: {
type: String,
default: '',
trim: true
},
players: [{
type: Schema.ObjectId,
ref: 'Player'
}
});

mongoose.model('Coach', CoachSchema);

关于javascript - 将 JSON 数组添加到 Mongoose 模式 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34230741/

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