javascript - 如何使用 mongoose 为已创建的文档编写子文档
问题描述
我创建了这个架构:
const lolDataSchema = new mongoose.Schema({
userId:{type: mongoose.Schema.Types.ObjectId , ref:'User'},
id: {type: String},
name: {type: String},
accountId: {type: String},
puuid: {type: String, unique:true},
lolServer: {type: String},
summonerLevel: {type:Number},
})
const UserSchema = new mongoose.Schema({
username: {type: String, require: true, unique:true},
email: {type: String, require: true, lowercase: true, unique:true},
password: {type:String, require: true, select: false},
createdAt: {type: Date, default: Date.now},
LolData: lolDataSchema
});
用户已经创建,我只需要填写“lolDataSchema”中的信息。为此,我尝试过使用此功能,但是当我查看数据库时,数据没有保存。我做错了什么?
module.exports = {
async saveSummoner(req, res) {
const lolDataApi = await axios.get(`https://${server}.api.riotgames.com/lol/summoner/v4/summoners/by-name/${req.body.name}?api_key=${api_key}`).catch(error => console.log(error));
User.findOneAndUpdate(req.body._id, { $push: {LolData: lolDataApi.data} } );
console.log(lolDataApi.data);
return res.json(lolDataApi.data);
}
}
解决方案
findOneAndUpdate 不会返回新的更新文档,而是默认返回{new:true}
原始{returnOriginal:false}
文档
User.findOneAndUpdate(req.body._id, { $push: {LolData: lolDataApi.data}},{returnOriginal:false}, (err, doc) => {
if (err) {
console.log("error while updating");
}
console.log(doc);
});
推荐阅读
- php - 如何将“amp-state”提交给我在“action-xhr”上调用的网络服务?
- neo4j - 仅返回两个节点之间的特定关系(来自一种类型的多个)
- php - 如何在php中显示多个行的值?
- optaplanner - Optaplanner 限制 valueRangeProvider 基于另一个实体
- python - 无法从 python 模块 md5hash 导入
- java - 空指针异常 - 依赖注入 - Google Guice
- javascript - 如何使用 CurrentUserId 在 Firebase 中进行 CRUD 操作?
- visual-studio-2013 - 自定义 Window Vista 示例现有包装凭证提供程序
- elasticsearch - 在 filebeat 源路径中使用变量
- python - 我的mysql上的“RuntimeError:无法检索最后一个插入ID”