反应js mongodb查询问题

时间:2017-12-03 18:58:31

标签: mongodb mongoose

我在查询我的mongodb数据库时遇到问题。我正在使用反应js。问题似乎不是连接,因为我可以保存到数据库就好了,我只能假设它的语法问题。我环顾四周但找不到修复方法。下面是schema.js文件和index.js文件的代码片段:

Schema.js

//import dependency
var mongoose = require('mongoose')
var Schema = mongoose.Schema
//create new instance of the mongoose.schema. the schema takes an
//object that shows the shape of your database entries.
var UserSchema = new Schema({
 socketId: String
})
//export our module to use in server.js
module.exports = mongoose.model('User', UserSchema)

index.js

var mongoose = require('mongoose')
var db = mongoose.connect('mongodb://mongodatabase', {
  useMongoClient: true,
  /* other options */
})
var UserSchema = require('../schema/Schemas');

function userExist(userList, username){
    var usert = new UserSchema()
    var query = usert.where({socketId: username})
    query.findOne(function (err, usert) {
      if (err) return handleError(err);
      if (usert) {
        // doc may be null if no document matched
      }
    });
  	return username in userList
    // return query
}

我收到错误:usert.where不是函数。 我尝试使用只是找到但我得到相同的错误

欢迎任何帮助,谢谢

1 个答案:

答案 0 :(得分:0)

您应该直接在架构类上使用.findOne function而不是.where

像这样:

UserSchema.findOne({socketId: username}, function (err, usert) {
  if (err) return handleError(err);
  if (usert) {
    // doc may be null if no document matched
  }
});

.where必须用于查询,而不是架构。

要使用.where,您可以这样做:

User.findOne().where({ socketId: username }).exec( function (err, usert) {
  if (err) return handleError(err);
  if (usert) {
    // doc may be null if no document matched
  }
})