节点 js / Mongoose .find()

新手上路,请多包涵

我在节点 js 服务器上使用猫鼬中的 .find() 函数时遇到问题我一直在尝试使用它,但我无法从我的数据库中获取关键信息。

 user.find({key: 1} , function(err, data){
  if(err){
    console.log(err);
  };
  console.log("should be the key VVV");
  console.log(data.key);
});

我主要只是无法理解此函数如何接受查询并返回数据库的响应。如果有人可以分解它,我将非常感谢 mongoose 文档没有太大帮助。

如果有帮助,这也是我的用户模式

var userSchema = new mongoose.Schema({
  username: {type: String, unique: true},
  password: {type: String},
  key: {type: String},
  keySecret: {type: String}
}, {collection: 'user'});

var User = mongoose.model('user',userSchema);

module.exports = User;

原文由 Echo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 252
2 个回答

如果您想象您的数据库看起来像这样:

 [
    {
        "name": "Jess",
        "location": "Auckland"
    },
    {
        "name": "Dave",
        "location": "Sydney"
    },
    {
        "name": "Pete",
        "location": "Brisbane"
    },
    {
        "name": "Justin",
        "location": "Auckland"
    },
]

执行以下查询;

myDB.find({location: 'Brisbane'})

将返回:

 [
    {
        "name": "Pete",
        "location": "Brisbane"
    }
]

myDB.find({location: 'Auckland'}) 会给你

[
    {
        "name": "Jess",
        "location": "Auckland"
    },
    {
        "name": "Justin",
        "location": "Auckland"
    },
]

如您所见,您正在通过数组查找与您要查找的键相匹配的键 find 并以数组的形式返回与该键搜索匹配的所有文档.

Mongoose 接口以回调的形式将这些数据提供给您,您只需要在它返回的数组中查找项目即可

user.find({location: "Auckland"}, function(err, data){
    if(err){
        console.log(err);
        return
    }

    if(data.length == 0) {
        console.log("No record found")
        return
    }

    console.log(data[0].name);
})

原文由 David Alsh 发布,翻译遵循 CC BY-SA 3.0 许可协议

也许你应该使用

Model.findOne({key: '1'}, function(err, data) {
  console.log(data.key);
});

find() 将得到一个文档数组,而 findOne() 只能得到一个文档。

Your field key is String type, so your query obj shoule be {key: '1'} , not {key: 1} .

仔细阅读猫鼬文档可能会对您有所帮助。

原文由 lutaoact 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏