node.js - 如何在nodejs中使用objectId
问题描述
我用猫鼬写了2个模型。首先是用户,另一个是电影。我在下面写了这个模型。首先,我将所有用户保存在用户集合中。之后,我想将我的电影保存到电影收藏中。但是当我想定义我的导演字段时,我收到一个错误“ReferenceError:导演未定义”
const userSchema = new Schema({
imdbId: String,
name: String,
});
var User = mongoose.model('user', userSchema);
const movieSchema = new Schema({
imdbId: String,
title: String,
rank: Number,
year: Number,
stars:[{
type: Schema.Types.ObjectId,
ref: 'userSchema'
}],
director:{
type: Schema.Types.ObjectId,
ref: 'userSchema'
}
});
var Movie = mongoose.model('movie', movieSchema);
module.exports = {Movie, User}
这是我的功能:
async function findObjectIdByImdbId(str) {
const result = await User.findOne({ imdbId: str})
return result._id
}
async function insertMovieToDb (obj) {
var movie = new Movie ({
imdbId: obj.id,
title: obj.name,
rank: obj.rank,
rating: obj.rating,
year: obj.year,
director: await findObjectIdByImdbId(obj.director)
})
await movie.save(function(err) {
if (err) {console.log(err)
return
}})
}
insertJsonFileToDb().catch(console.log)
解决方案
移出await findObjectIdByImdbId(obj.director)
电影初始化
例如
var directorObjId = await findObjectIdByImdbId(obj.director);
var movie = new Movie ({
imdbId: obj.id,
title: obj.name,
rank: obj.rank,
rating: obj.rating,
year: obj.year,
director: directorObjId
})
推荐阅读
- mysql - SQLALCHEMY 查询与映射表的多对多关系
- javascript - 是否有一种标准方法可以在文本区域或输入上执行原子更改或操作?
- python - 使用 Beautiful Soup 显示来自 onmouseover 属性的文本
- haskell - Haskell - fileManip find - 递归搜索时忽略目录不起作用
- python - 不同功能的不同页面
- css - 移动响应徽标
- java - 遇到覆盖 ArrayList 对象初始化的先前实例的问题
- r - R - 单个向量中的值对:如何检测缺失值?
- javascript - Why {...rest} can be used in attributes
- python - Python_Pandas - 使用条件填充新行