Javascript 如何仅返回使用mongoose执行save()后创建的文档
当我使用Javascript 如何仅返回使用mongoose执行save()后创建的文档,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,当我使用return wait Model.save()时,它们会返回大量数据。有没有办法只返回文档 代码: async(数据)=>{ const charData=新的MyModel({ steamId:data.steam, 电话:data.phone, 注册:data.registration, }) return wait MyModel.save() } 我在许多网站上搜索过,但没有找到任何使用异步函数的示例 有一个示例,MyModel.save()返回: 因此,当return w
return wait Model.save()时,它们会返回大量数据。有没有办法只返回文档
代码:
async(数据)=>{
const charData=新的MyModel({
steamId:data.steam,
电话:data.phone,
注册:data.registration,
})
return wait MyModel.save()
}
我在许多网站上搜索过,但没有找到任何使用异步函数的示例
有一个示例,MyModel.save()
返回:
因此,当return wait wait MyModel.save()将mongoose文档转换为纯javascript对象表示时,我希望只获取_doc对象,而不是全部
async (data) =>{
const charData = new MyModel({
steamId: data.steam,
phone: data.phone,
registration: data.registration,
})
await charData.save()
return charData.toObject({ getters: true })
}
请注意影响文档表示方式的选项:
getter
应用所有getter(路径和虚拟getter),默认为false
别名
如果virtuals=true
默认为true,则应用所有别名
virtuals
应用虚拟getter(可以覆盖getter选项),默认为false
最小化
删除空对象,默认为true
transform
返回前应用于结果文档的转换函数
取消填充
取消填充任何填充路径,并将其替换为原始引用,默认为false
versionKey
是否包含版本密钥,默认为true
flattmaps
将地图转换为POJO。如果要将toObject()的结果JSON.stringify()转换为默认值为false,则非常有用
useProjection
设置为true
以忽略此文档投影中排除的字段。除非指定了投影,否则此
将省略架构中具有select:false
的任何字段
那就这样试试
let res = await Model.save();
return res._doc;
假设您想要的“文档”是.save
返回的任何内容的属性,const x=wait MyModel.save();返回x.something
-其中something
是“文件”-否则,您要的“文件”是什么?@JaromandaX,正如doc所说()他们返回兑现承诺。当我执行查询/查找()时,我正在寻找与.lean()相同的结果,正如它所说的如果保存成功,返回的承诺将与保存的文档一起实现。
-因此,您正在返回保存的文档-您可能正在使用任何调用async(data)=>{
错误地…你意识到你的函数返回一个承诺,因为异步
函数返回一个承诺作为旁白…你永远不需要返回等待某个承诺
-你可以返回某个承诺
-事实上,在你的情况下,函数甚至不需要异步
,因为你从来没有执行过lly需要等待
-因此删除异步
和删除等待
,并确保无论调用什么函数都会这样做,并且预期的结果是Promise@JaromandaX我已经编辑了这个问题,并提供了我得到的结果。效果很好。我已经搜索了很多像你这样的例子。