Promisify 一个创建猫鼬模型实例(即文档)的函数,将其保存到模型,然后 returns 然后 returns 模型

Promisify a function that creates a mongoose model instance (i.e. a document), saves it to the model, and returns then returns the model

我正在尝试 Promisify 以下函数

let Definition = mongoose.model('Definition', mySchema)
let saveDefinition = (newDefinition) => {
  var newDef = new Definition(newDefinition);
  newDef.save();
  return Definition.find();
}

实现以下事件顺序

let saveDefinition = (newDefinition) => {
  return = new Promise((res, rej) => {
    // newDef = new Definition(newDefinition)
    // then
    // newDef.save()
    // then
    // return Definition.find()
  })
}

目标是根据客户端的请求调用此函数,将文档保存到名为“定义”的模型中,然后 return 模型中的所有文档返回给客户端。任何帮助或指导将不胜感激。

我不太确定如何解决这个问题

a function that creates a mongoose model instance (i.e. a document), saves it to the model, and returns then returns the model

您没有什么特别需要做的。 .save() 已 returns(承诺)已保存文档。 Return它。

const Definition = mongoose.model('Definition', mySchema);

const saveDefinition = (data) => {
  const newDef = new Definition(data);
  return newDef.save();
};

完成。


我会以不同的方式写它以摆脱那个全局 Definition 变量:

const saveObject = modelName => {
  const Model = mongoose.model(modelName, mySchema);
  return (data) => new Model(data).save();
};

const saveDefinition = saveObject('Definition');
const saveWhatever = saveObject('Whatever');

两种情况下的用法相同

saveDefinition({ /* ... */ }).then(def => {
  // success
}).catch(err => {
  // failure
});

async () => {
  try {
    const def = await saveDefinition({ /* ... */ });
    // success
  } catch (err) {
    // failure
  }
};