我尝试按名称查找一个项目,然后更新表格并返回更新的结果,但返回没有工作。我的代码:
class addSongsToArtist {
constructor(artistName) {
Artist.findOne({
name: artistName
}).exec((err, data) => {
if (err) console.log(err);
data.name = 'updated name'
data.save();
return data // * not work
});
}
}
进入exec方法我看到数据结果正确,并进入mongo控制台结果保存。但是回归不起作用。我尝试将更改保存到外部变量并在Promise中返回结果,但它也不起作用。 为什么它不起作用?
答案 0 :(得分:0)
我有解决方案。返回新对象实例的构造方法的问题。 工作代码:
class addSongsToArtist {
constructor(artistName) {
this.result = false
Artist.findOne({
name: artistName
}).exec((err, data) => {
if (err) console.log(err);
data.name = 'updated name'
data.save();
this.result = data
});
}
/**
* need call in promise after call new addSongsToArtist()
*/
getData() {
return this.result
}
}
获取数据:
let findOne;
Promise.resolve()
.then(()=>{
findOne = new addSongsToArtist()
})
.then(()=>{
findOne.getData()
});
答案 1 :(得分:0)
使用.save async函数作为同步函数,请尝试使用:
constructor(artistName) {
Artist.findOne({
name: artistName
}).exec((err, data) => {
if (err || !data){
console.log(err);
return null;
}
else
{
data.name = 'updated name'
data.save(function(err, savedDatas)
{
if(err || !savedDatas)
{
return null;
}
else
{
return savedDatas; // * not work
}
});
}
});