如何使用猫鼬将查询结果返回到变量

用户名

我仍处于Node.js和Moongoose的学习阶段,并且有一个场景

  • 我正在从表单提交中获取值(ABC)。这是用户的姓名
  • 然后我在用户集合(用户)中搜索该名称
  • 提取该用户,并使用ref在另一个架构(文章)中写入其ObjectID。

我的逻辑:

article.owner = User.findOne({ 'name' : 'ABC' })
    .exec(function (err, user){
         return user
    })

但这并没有返回结果。我引用了其他一些答案并尝试过,async.parallel但仍然无法将ABC用户的objectID保存在文章模式中,因为article.owner我总是变得空。

请建议我其他更好的方法。

布兰查德

当Node必须执行任何I / O(例如从数据库读取)时,它将异步完成。User.findOne这样的方法Query#exec永远不会预先返回结果,因此article.owner在您的示例中不会适当地未定义。

异步查询的结果仅在您的回调内部可用,只有在您的I / O完成后才调用该回调

article.owner = User.findOne({ name : 'ABC' }) .exec(function (err, user){    
    // User result only available inside of this function!
    console.log(user) // => yields your user results
})

// User result not available out here!
console.log(article.owner) // => actually set to return of .exec (undefined)

在上面的示例中,异步代码执行的含义是:当Node.js命中时article.owner = User.findOne...,它将执行User.findOne().exec(),然后console.log(article.owner).exec完成之前直接进入

希望有助于澄清。习惯于花一些时间进行异步编程,但通过更多实践可以理解

更新为解决您的特定问题,一种可能的解决方案是:

User.findOne({name: 'ABC'}).exec(function (error, user){
    article.owner = user._id; // Sets article.owner to user's _id
    article.save()            // Persists _id to DB, pass in another callback if necessary
});

如果要向用户加载以下文章,请记住使用Query#populate

Article.findOne({_id: <some_id>}).populate("owner").exec(function(error, article) {
    console.log(article.owner); // Shows the user result
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用猫鼬将查询结果返回到变量

来自分类Dev

将查找查询中的结果猫鼬返回给变量

来自分类Dev

猫鼬:如何查询嵌套文档并返回String结果?

来自分类Dev

猫鼬查询返回多个结果

来自分类Dev

如何将变量放入我的查询中?(猫鼬)

来自分类Dev

如何使用猫鼬查询的结果过滤数组?

来自分类Dev

PHP数据库查询:如何将while循环的结果返回到Javascript变量?

来自分类Dev

使用动态模型从猫鼬查询结果

来自分类Dev

使用动态模型从猫鼬查询结果

来自分类Dev

将猫鼬聚合函数返回到 Angular

来自分类Dev

如何从猫鼬查询返回值

来自分类Dev

如何查询猫鼬的返回值

来自分类Dev

如何使用include函数通过php变量将数据库查询的结果返回到另一个页面

来自分类Dev

如何通过猫鼬查询返回嵌入式文档的过滤结果

来自分类Dev

猫鼬地理查询未返回正确的结果

来自分类Dev

通过多种方法返回猫鼬查询结果

来自分类Dev

访问猫鼬查询结果

来自分类Dev

猫鼬返回重复的结果

来自分类Dev

猫鼬返回多个结果

来自分类Dev

猫鼬返回重复的结果

来自分类Dev

将查询/表返回到变量

来自分类Dev

猫鼬:将数据添加到返回的结果集中

来自分类Dev

将变量设置为猫鼬查找结果

来自分类Dev

将变量设置为猫鼬查找的结果

来自分类Dev

如何使用猫鼬在返回结果中创建新字段并根据条件在其中设置值?

来自分类Dev

如何计算猫鼬查询返回的文档所使用的磁盘空间(字节)?

来自分类Dev

如何创建支持空值并返回全部的猫鼬查询

来自分类Dev

如何在猫鼬查询方法中返回错误?

来自分类Dev

如何修复返回空数组的猫鼬查询

Related 相关文章

热门标签

归档