Hii我正在使用Node.js + MongoDB运行一个网站。一位自由职业者帮助我设置了所有的运行,但现在不幸的是没有响应。
我有一个设置,我记得他告诉我第一个管理员用户将以编程方式创建,用户可以通过简单的SignUp选项创建。我正在尝试在我的本地副本上测试一些内容,因为该本地副本只创建了一个只有数据库但没有用户的新副本。我能够通过SignUp创建普通用户,但我无法创建所需的管理员用户。
我不知道如何在MongoDB中工作,但我试图参考手册并尝试以下命令:
mongo -- shell : It made me enter the Mongo console .
show databases : Showed me two vix Automator and local .
I know Automator must be mine since that's what my project is called .
Then I typed : use automator and entered the database
I typed there show collections ; and got the following output :
box
device
gcm
system.indexes
user
我想用户是我应该能够创建管理员和其他用户的集合,但我不确定这是否正确,我不知道如何。我已经创建了一个普通用户,可以在我的本地副本上登录,但我也没有在任何地方看到该用户。
继续我的研究,我执行了以下命令:
> var schematodo = db.user.findOne();
> for (var key in schematodo) { print (key) ; }
Output :
id
fullname
address
phone
city
state
country
email
admin
api
passwordFailures
encrypted_password
salt
createdAt
updatedAt
尝试了db.user.find()。pretty()
输出:我看到我使用注册方法创建的正常测试用户详细信息。如何以相同的方式创建管理员?是否通过设置键Admin = true?
输出:
{
"_id" : ObjectId("558c1c3d14635a3518d21d15"),
"fullname" : "Diwesh Sacena",
"address" : "Testing Lab",
"phone" : "0106666666",
"city" : "Seoul",
"state" : "Seoul",
"country" : "Korea",
"email" : "tut@gmail.com",
"admin" : false,
"api" : false,
"passwordFailures" : 0,
"encrypted_password" : "$2a$06$U31sneJr6zudiY0eo79.7.cWCSBpfLGcCI7d2limq59V6RKNwXT9S",
"salt" : "$2a$06$U31sneJr6zudiY0eo79.7.",
"createdAt" : ISODate("2015-06-25T15:20:29.225Z"),
"updatedAt" : ISODate("2015-06-25T15:20:29.225Z")
}
同时查看源代码我找到了一个名为User.js的文件,其中包含相同的架构信息,也许你可以看看这个并帮助:(
user.js的
/**
* User.js
*
* @description ::
* @docs :: http://sailsjs.org/#!documentation/models
*/
module.exports = {
schema: true,
attributes: {
fullname: {
type: 'string',
required: true
},
email: {
type: 'string',
email: true,
required: true,
unique: true
},
admin: {
type: 'boolean',
defaultsTo: false
},
api: {
type: 'boolean',
defaultsTo: false
},
state: {
type: 'string'
},
city: {
type: 'string'
},
country: {
type: 'string'
},
address: {
type: 'string'
},
phone: {
type: 'string',
required: true
},
encrypted_password: {
type: 'string'
},
salt: {
type: 'string'
},
passwordFailures: {
type: 'integer',
defaultsTo: 0
},
lastPasswordFailure: {
type: 'datetime'
},
resetToken: {
type: 'string'
},
toJSON: function () {
var obj = this.toObject();
return {
id: obj.id,
fullname: obj.fullname,
admin: obj.admin
}
},
validatePassword: function (password, next) {
if (!password || password.length === 0) {
return next(null, false);
}
var obj = this.toObject();
UserManager.hashPassword(password, obj.salt, function (err, hashedPassword) {
if (err) return next(err);
next(null, hashedPassword === obj.encrypted_password);
})
}
},
beforeCreate: function (values, next) {
if (!values.password || values.password != values.confirmation) {
return next({
message: "Password doesn't match password confirmation."
})
}
var _salt = null;
UserManager.hashPassword(values.password, _salt, function (err, password, salt) {
if (err) return next(err);
values.encrypted_password = password;
values.salt = salt;
next();
})
}
}
这些是我的源文件夹中的更多文件:如果您认为其中任何一个适合您检查,请告诉我,我也可以发布该文件:
请帮助如何继续:(
尝试:db.user.update({_id: ObjectId("558c1c3d14635a3518d21d15")},{admin: true})
输出:
> db.user.update({_id: ObjectId("558c1c3d14635a3518d21d15")},{admin: true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find().pretty()
{ "_id" : ObjectId("558c1c3d14635a3518d21d15"), "admin" : true }
但是现在我无法使用与此帐户相关联的ID登录。另外你现在可以看到find()。pretty()取代了用户的所有细节,基本上更新了它们:(
答案 0 :(得分:0)
在寻求几位专家的帮助后,我终于能够解决问题了,虽然我的案例更具体,因为我的网络程序具有某些功能,我可以将普通用户提升为管理员。但是,我想发布一个快速参考,您也可以使用MongoDb手册,但这些步骤可以按顺序用于提取大部分数据。
mongo --shell : start momgo shell in terminal
show databases : shows all databases
show collections : shows all collections inside that database
db.collectionName.find().pretty() : shows the collection schema with complete details and existing data
To make the first admin :
1. Make a normal user through signup
2. db.user.update({_id: ObjectId("5593aa85dab6c3b33a853ef4")},{ $set:{admin: true} })
where ObjectID is can be seen from find().pretty() and "user" is the name of your collection in the database .