以上必需:appId、masterKey、databaseURI
访问 http://localhost:4040/parse
返回 {"error":"unauthorized"}
暂时不知道怎么解决,不过 parse的服务是启动了的。
parse 虽然表示没有授予权限
但是 dashboard 也还是可以进入登录页面,
但是输入账号密码后,返回的页面是
form tampered with
问题解决:
// dash.js
var dashboard = new ParseDashboard({
apps: [
{
appId: config.appId,
masterKey: config.masterKey,
appName: "☝️项目桀",
fileKey: 'E3D35BDBFA49BD2F',
serverURL: 'http://localhost:4040/parse',
},
],
user: {
user: "admin",
pass: "123qwe",
useEncryptedPasswords: true,
apps: [{appId: config.appId}]
},
// "trustProxy": 1,
// 'useEncryptedPasswords': false,
});
// 更改内容,原dashboard.user中的 user。是。users,改成user就可以了
使用MVC设计模式,暴露了model/user、router/user、没有编写 manage
注册时,发送 json 格式数据如下:
{
"username": "admin",
"password": "123qwe"
}
==>>POST http://localhost:4040/user/signup
返回
error: Parse error: bad or missing username
{
"code":200,
"stack":"Error: bad or missing username“
}
分析原因:状态码 200 表示服务已经连通,但是 没有发送数据,error表示我的数据丢失或者不对,既然我在postman已经选择body模式为json格式的raw包,那么数据还会丢失,也就意味着,我的数据传入有问题,既然有问题,那么就把body改成json格式。
解决:
// 把浏览器发送过来的数据转成json
req.body = JSON.parse(JSON.stringify(req.body));
疑惑樂:我不可能每个接口都要写req的body转成json格式呢。
后续:奇怪我明明改了postman body raw格式 json格式,去掉 上面的解决代码,现在又行了????
// model.js
let Parse = require("parse/node");
class User extends Parse.User {
static get schema() {
return {
'className': 'User',
'fields': {
'username': {
'type': 'String',
'required': true
},
'password': {
'type': 'String',
'required': true
}
}
}
}
}
Parse.Object.registerSubclass('_User',User);
module.exports = User;
// managers/userManager.js
let Parse = require('parse/node');
let Cls = require('../model/user');
function get(Cls,target,options) {
let query = new Parse.Query(Cls);
if (typeof target == 'string') {
query.equalTo('username', target);
}else if (target.hasOwnProperty('__type')) {
query.equalTo('username', target.username);
}else if (target instanceof Parse.Object) {
query.equalTo('username', target.username);
}
return query.first(options).then(function (result) {
if (!result) {
console.log('没有result');
return errorCallback();
}
return result;
});
}
module.exports = {
get: get,
};
// router/user.js
let express = require('express');
let router = express.Router();
let User = require('../model/user')
let Manager = require('../managers/userManager');
console.log(User);
console.log(typeof User);
router.get('/:username', function (req, res, next) {
User.get(Manager,req.params.username,req.options).then(function (result) {
res.status(200).json(result);
}, function (err) {
res.status(500).json(err);
});
});
router.post('/signup', function (req, res, next) {
// req.body = JSON.parse(JSON.stringify(req.body));
var user = new Parse.User();
user.set('username', req.body.username);
user.set('password', req.body.password);
console.log(req.username);
console.log(req.body.username);
user.save({'username': req.body.username,'password': req.body.password}).then(function(msg) {
res.msg = msg;
res.send(res.msg);
return msg
}).catch(err => {
res.msg = err;
res.send(res.msg);
return err
})
});
router.post('/signin', function (req, res, next) {
});
module.exports = router;
A ParseQuery must be constructed with a ParseObject or class name.
/* 如上报错,是我在设置参数的时候,(Cls,target,options)
其中。Cls是一个 model的对象,上面的报错大致内容就是,要想进行ParseQuery查询,我就要给他一个 ParseObject的对象
或者一个类名。
*/
User.get is not a function
/*
而对于如上的报错呢,就是我傻傻的把User和Manager弄混淆的原因,User是一个ParseObject,Manager是一个程序逻辑,引用的一个方法。
*/
// router.get的更改
router.get('/:username', function (req, res, next) {
Manager.get(User,req.params.username,req.options).then(function (result) {
res.status(200).json(result);
}, function (err) {
res.status(500).json(err);
});
});
// postman get
====>>> http://localhost:4040/user/admin
====>>> 返回
{
"username": "admin",
"createdAt": "2021-10-21T06:45:53.217Z",
"updatedAt": "2021-10-21T06:45:53.217Z",
"ACL": {
"*": {
"read": true
},
"0cOmlCGinM": {
"read": true,
"write": true
}
},
"objectId": "0cOmlCGinM"
}
mongodb真的和mysql 不一样啊,好,我都找不到我 的数据在哪
// config.js
module.exports = {
"appId": "e3d35bdbfa49e2cf",
"masterKey": "E3D35BDBFA49E2CF",
"databaseURI": "mongodb://localhost:27017/dev",
};
// model/user.js
class User extends Parse.User {
static get schema() {
return {
'className': 'User',
'fields': {
'username': {
'type': 'String',
'required': true
},
'password': {
'type': 'String',
'required': true
}
}
}
}
}
// 综上所述,我的mongodb是本地的mongo,数据库是dev的数据表有user
setReadAccess
andsetWriteAcecess
来给Parse.ACL添加独有的权限。还可以使用setPublicReadAccess
和setPublicWriteAccess
一次授权所有用户