javascript - 使用 Node JS 和 Mongoose 访问插入文档的结果
问题描述
我有这个代码:
var newresult = ""
oneDoc = { "adClientID": *randomID*, "adClientName": "abc", "adClientNameUPC": "ABC" }
newdoc.push(oneDoc)
await AdClient.create(newdoc, (err, result) => {
console.log(result)
console.log(result.adClientID)
newresult = result
})
console.log(newresult)
现在我需要访问已添加到集合中的值。
使用此代码,打印“结果”的行可以正常工作并打印以下内容:
{
adClientID: 'da7d3d78-b873-4cdd-ae85-3726d3cbd8a7',
adClientName: 'abc',
adClientNameUPC: 'ABC',
_id: '5f6e4582a790764cab84f586',
__v: 0
}
但是打印的行result.adClientID
返回 undefined 并且打印的行newresult
返回一个空字符串。
我错过了什么阻止我访问添加的特定数据?
解决方案
我可能是错的,但我认为你await
实际上并没有在等待任何事情。Mongoose 说这个函数可以返回一个 Promise(可以等待)或未定义。
Returns undefined if used with callback or a Promise otherwise.
无论如何,我建议不要混合异步编程风格。
我不太熟悉,.create
因为我们通常使用 upserts,但我会这样写:
const updated = await AdModel.findOneAndUpdate(
{ adClientID: oneDoc.adClientID },
{ $set: { ...oneDoc } },
{ new: true, upsert: true, ...options },
}).lean();
console.log(updated);
推荐阅读
- javascript - 正则表达式检查总是返回 null\false\-1
- r - 1 天的滚动总和,如果值等于 0,则重置
- php - reply_markup 在 php + webhook 中不起作用
- python - 如何针对这种特定情况编写 while 循环?
- r - 如何使用 ggplot2 在等高线图中添加标签?
- javascript - 用“this”改变风格,对象不工作
- c# - 表单之间的过渡动画
- android - 以编程方式添加视图时的响应宽度和高度
- javascript - 在 React 中调用 event.persist() 后调用 event.preventDefault()
- c# - 我应该把这些代码放在哪里随时执行?