Arrays 水线ORM,find()查询返回什么?
我正在使用sails mongo适配器连接到本地mongodb服务器。我有一个模型,那就是Arrays 水线ORM,find()查询返回什么?,arrays,mongodb,sails.js,javascript-objects,waterline,Arrays,Mongodb,Sails.js,Javascript Objects,Waterline,我正在使用sails mongo适配器连接到本地mongodb服务器。我有一个模型,那就是Users.js,我试图找到具有特定ID的用户 User.findOne({userID:authID}).exec(function(error, found){ console.log(typeof found); console.log(found); if (typeof myObj !== "undefined") {
Users.js
,我试图找到具有特定ID的用户
User.findOne({userID:authID}).exec(function(error, found){
console.log(typeof found);
console.log(found);
if (typeof myObj !== "undefined") {
console.log('user already exists');
//res.send({response: 'userExists'});
} else {
console.log('gotta create a new user');
User.create({
userID: authID,
name: 'name',
age: 'age',
gender: 'gender',
loggedIn: true}).exec(function(err, created) {
if (err)
console.log(err);
else {
console.log(typeof created);
console.log(created.keys({}).length);
console.log('user created: ' + created.name);
}
});
//res.send({response: 'userCreated'});
}
});
上面的代码给出了控制台日志中的一些错误
有两件事:您的代码不能处理
err
对象.find()
始终返回一个对象数组。检查user.length
应该有效,或者如果user
未定义,user.length将抛出TypeError
。如果在sails控制台中运行User.find({userID:authID}).exec(函数(e,r){console.log(e | | r})
?console.log(r)
返回一个空数组[]
和console.log(e)
返回null
,但这没有任何意义,记录已经存在于数据库中,它应该能够找到它。您如何知道它正在创建一个新用户?您的代码不会将回调函数传递给user.create()
,也不会调用user.create()上的.exec()
。无论您在上面的代码中调用.create()
时发生了什么,它都会发送您的肯定响应,即使它没有创建用户。@metzuda我编辑了我的查询,我对else语句之间的所有内容都进行了注释,因此我在控制台日志中得到了两次未定义的(对于if语句中的两个控制台日志)但是当我取消注释其他语句时,会出现新的错误,这与我的节点模块有关。看起来像是验证错误。您的模型中是否有require:true
而不是required:true
?