首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >返回Model.create(arr).exec()在mongoose中不起作用

返回Model.create(arr).exec()在mongoose中不起作用
EN

Stack Overflow用户
提问于 2016-05-19 04:35:36
回答 3查看 4.4K关注 0票数 1

我听说exec“返回一个承诺”,所以我使用exec来做异步调用。这个问题启发了我的另一个question。评论员说我的代码不工作是因为:

您正在同步使用异步代码

我试图通过使用下面的代码来解决这个问题。不知道这段代码会不会让它不同步,但我听说这会有帮助。

因此,我有这个,我不能创建(保存)数据,但我可以删除它。为什么我不能对remove使用与create相同的模式?

代码语言:javascript
复制
var Comp = require("./models/company.js");
  var arr = [
    {name : "comp1",industry : "industry1", ranking: 20},
    {name : "comp2",industry : "industry2", ranking: 5},
    {name : "comp3",industry : "industry3", ranking: 10}
  ]


Comp.find({}).exec()
    .then(function(docs){
        return Comp.remove({}).exec()
        .then(function(){
            console.log("deleted")
        })
    })
    .then(function(){
        return Comp.create(arr).exec()
        .then(function(data){
            console.log(data)
        })
    })

你能帮我达到我在另一个问题中的最初目标吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-19 04:51:32

then函数不返回promise,执行程序返回

所以你需要做return Comp.remove({}).exec()

代码语言:javascript
复制
Comp.find({}).exec()
.then(function(docs){
    return Comp.remove({}).exec();
})
.then(function(result_of_remove){
    return Comp.create(arr).exec();
})
.then(function(result_of_create){
    ....
})
票数 3
EN

Stack Overflow用户

发布于 2016-05-19 10:13:15

首先,你应该确认你的mongoose版本。

在旧版本中:

Model.create(doc)返回一个query对象;调用query的exec方法将触发数据库操作并返回promise。

mongoose Model.create(doc)的新版本(我使用的是4.4.8)中,'Model.remove(con)‘直接返回一个promise。

因此,请检查您的版本,看看是否需要删除一些exec

最后但并非最不重要的是,添加catch调用来检查是否有错误,这在调试时会有所帮助

代码语言:javascript
复制
Comp.find({}).exec()
.then(function(docs){
    return Comp.remove({}).exec();
})
.then(function(result_of_remove){
    return Comp.create(arr).exec();
})
.then(function(result_of_create){
    ....
})
.catch(function(error){
  console.log(error)
})
票数 2
EN

Stack Overflow用户

发布于 2019-04-01 08:58:17

我通常使用.exec(),当我想要在使用

Model.findOne(...).exec()

Model.create(...)返回一个Promise。

对于Model.create(...)

,不存在.exec()函数

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37309637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档