
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
mbaas-js-sdk-alipay
Advanced tools
npm i mbaas-js-sdk-alipay
import MBaasSDK from '@aliyun/mbaas-js-sdk-xx'
MBaasSDK.init(config)
MBaasSDK.login({ username, password }, (error, res) => {
if (error) {
console.error(error)
return
}
MBaasSDK.db('foo').get(callbackFoo)
})
function callbackFoo(error, res) {
// ...
}
MBaasSDK.init(config)
初始化 SDK。这个方法必须在初始化时调用。
This method must be called before any other calls on the SDK itself.
Arguments
config
: SDKConfig
an object
with keys below:
appId
required
小程序应用ID,从控制台获取secret
required
小程序应用秘钥,从控制台获取envId
required
小程序应用环境ID,从控制台获取DEMO
sdk.init({
"appId": 123456,
"secret": "this is your secret",
"envId": "test"
});
MBaasSDK.login(callback)
登录接口,向控制台同步用户信息。
Arguments
callback
: CallbackFunction
a function
with the arguments below:
error
: Error
如果请求有错误,返回该错误;否则为空res
: any
返回请求结果DEMO
sdk.login(function (err, res) {
if (err) {
console.error(err);
return;
}
// continue with res
});
Tips
(@todo: tips -> CallbackFunction below)
MBaasSDK.db(name): MBaasDatabase
Get a database manager
Arguments
name
: string
数据表名 / the name of the db you want to useReturns: MBaasDatabase
数据表实例 / the database instance
当你获得一个数据表实例时,你可以调用以下属性或方法:
When you get the collection instance, you can access its members below:
MBaasDatabase#name
获取数据表名
Get the name of the db
Returns: string
数据表名 / the name of the db
DEMO
sdk.db('test').name
// print test
MBaasDatabaseCollection#get(condition?, callback)
查询数据库
Query entries with a certain condition.
Arguments
condition?
: Object
(可选)查询条件 / Query
an object that describe the condition you want to querycallback
: 回调函数 / CallbackFunction
error
: Error
如果请求有错误,返回该错误;否则为空res
: any
返回请求结果DEMO
// 不带查询条件的查询
sdk.db('test').get(function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { results: [{"objectId": 1, "name": "李四", "score": 40}, {"objectId": 2, "name": "张三", "score": 60}, {"objectId": 3, "name": "王五", "score": 98}] }
});
查询条件
在 Query
中使用 where
表示查询条件,以 keyvalue 的形式。
DEMO
// 带 where 的查询
sdk.db('test').get({
where: {"name": "李四"}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { results: [{"objectId": 1, "name": "李四"}]}
});
除此之外,查询语句还支持以下更复杂的操作:
关键词 | 操作 |
---|---|
$lt | 少于 |
$lte | 少于等于 |
$gt | 多于 |
$gte | 多于等于 |
$ne | 不等于 |
$in | 包含 |
$nin | 不包含 |
$exists | 存在某个字段 |
$select | 符合子查询条件 |
$dontSelect | 不符合子查询条件 |
$all | 全部含有 |
$regex | 某个字段的值符合相应的正则 |
$text | 在有索引的字段上执行文字匹配 |
DEMO
// 返回分数大于等于1000,并小于等于3000的记录
sdk.db('test').get({
where: {"score": {"$gte": 1000, "$lte": 3000}}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { results: [{"objectId": 1, "score": 2083}]}
});
// 返回分数等于1,3,5,7,9的记录
sdk.db('test').get({
where: {"score": {"in": [1, 3, 5, 7, 9]}}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { results: [{"objectId": 1, "score": 2083}]}
});
// 返回名字不为 Jonathan Walsh,Dario Wunsch,Shawn Simon 的记录
sdk.db('test').get({
where: {"playerName": {
"nin": ["Jonathan Walsh", "Dario Wunsch", "Shawn Simon"]
}}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { results: [{"objectId": 1, "score": 2083}]}
});
// 返回有 score 字段的记录
sdk.db('test').get({
where: {"score": { "$exists": true }}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { results: [{"objectId": 1, "score": 2083}]}
});
// 返回含有符合子查询条件的记录
sdk.db('test').get({
where: {"hometown":{"$select":
{"query":{"className":"Team","where":{"winPct":{"$gt":0.5}}},"key":"city"}}
}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { results: [{"objectId": 1, "score": 2083}]}
});
除了 where
语句,我们还有一些用于限制返回结果的属性:
字段 | 作用 |
---|---|
order | 排序 |
limit | 限制每次返回数量 |
skip | 起始间隔数量 |
keys | 返回的记录字段 |
DEMO
// 返回以 score 字段升序排列的记录
sdk.db('test').get({
order: "score"
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
});
// 返回以 score 字段降序排列的记录
sdk.db('test').get({
order: "-score"
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
});
// 返回以 score 字段升序排列,name 降序排列的记录
sdk.db('test').get({
order: "score,-name"
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
});
// 返回从 401 开始的后续 200 条记录
sdk.db('test').get({
limit: 200,
skip: 400
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
});
// 返回只包含 score 和 playerName 的记录
sdk.db('test').get({
keys: "score,playerName"
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
});
// 组合起来使用
sdk.db('test').get({
where: {"playerName": {
"nin": ["Jonathan Walsh", "Dario Wunsch", "Shawn Simon"]
}},
order: "score,-name",
limit: 200,
skip: 400,
keys: "score,playerName"
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { results: [{"objectId": 1, "score": 2083}]}
});
使用 where
中 $regex
和 $text
可以实现文本查询。
其中 $text
的格式为: {"$text": {"$search": {parameter}}}
,参数名如下:
参数 | 作用 |
---|---|
$term | 定义搜索的文本(必须) |
$language | Determines the list of stop words and the rules for tokenizer. |
$caseSensitive | 是否开启大小写 |
$diacriticSensitive | Enable or disable diacritic sensitive search |
DEMO
// 通过正则匹配查找
sdk.db('test).get({
where: {"name": {"$regex": "^Big Daddy"}}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
});
// 通过 text 进行更有效的查询
sdk.db('test).get({
where: {"name": {"$text": {"$search": {"$term": "Daddy"}}}}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
});
你可以通过 count
查询记录总数,可以通过设置 limit
为 0 避免记录的查询。
DEMO
sdk.db('test).get({
where: {"name": "good"},
count: 1,
limit: 0
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { "results": [], "count": 1000 }
});
你可以使用 $or
对查询条件进行组合。
DEMO
sdk.db('test).get({
where: {"or": [{"wins": {"$gt": 150}}, {"wins": {"lt": 5}}]}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { "results": [], "count": 1000 }
});
使用 distinct
支持指定字段选取唯一值。
DEMO
sdk.db('test).get({
where: {"playerName": "Sean Plott"},
distinct: "score"
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { "results": [], "count": 1000 }
});
使用 group
参数:$sum
, $avg
, $max
, $min
对记录进行聚合操作,使用方法类似于 distinct
。
DEMO
sdk.db('test).get({
group: {"objectId": null, "total": {"$sum": "$score"}}
}, function(err, res) {
if (err) {
console.error(err);
return;
}
console.log(res);
// print { "results": [], "count": 1000 }
});
MBaasDatabase#add(entry, callback)
向数据库插入一条记录
Arguments
entry
: Entry
插入的记录callback
: CallbackFunction
error
: Error
如果请求有错误,返回该错误;否则为空res
: any
返回请求结果DEMO
coll.add({
"score": 435, // type Number
"playerName": "Tim", // type String
"cheatMode": false, // type Boolean
"addr": null, // type Null
"birthday": { "__type": "Date", iso: "1995-01-01T00:00:00Z" }, // type Date
"habbits": ["swimming", "football"], // type Array
"parents": {
"father": "John",
"mother": "Marry"
} // type Object
}, (err, res) => {
if (err) {
console.error(err);
return;
}
console.log(res);
});
Tips
请确保先在控制台创建好数据表,否则会失败。
MBaasDatabase#addMany(entries, callback)
向数据库插入多条记录
Arguments
entries
: Array<Entry>
插入的数据callback
: CallbackFunction
error
: Error
如果请求有错误,返回该错误;否则为空res
: any
返回请求结果,注意此处是数组,对应每条记录的状态DEMO
coll.add([{
"score": 435, // type Number
"playerName": "Tim", // type String
"cheatMode": true, // type Boolean
}, {
"score": 100, // type Number
"playerName": "Sam", // type String
"cheatMode": false, // type Boolean
}], (err, res) => {
if (err) {
console.error(err);
return;
}
console.log(res);
});
MBaasDatabase#updateById(entryId, entry, callback)
通过记录 ID 修改记录
Arguments
entryId
: string
记录的 objectIdentry
: Entry
修改内容callback
: CallbackFunction
error
: Error
如果请求有错误,返回该错误;否则为空res
: any
返回请求结果DEMO
const coll = sdk.db('test')
coll.get({
where: { playerName: "Sean Plott" },
}, (err: any, res: any) => {
const id = res.results[0].objectId;
coll.updateById(id, { score: 0 }, (err: any, res: any) => {
});
});
MBaasDatabase#deleteById(entryId, callback)
通过记录 ID 删除记录
Arguments
entryId
: string
记录的 objectIdcallback
: CallbackFunction
error
: Error
如果请求有错误,返回该错误;否则为空res
: any
返回请求结果DEMO
const coll = sdk.db('test')
coll.get({
where: { playerName: "Sean Plott" },
}, (err: any, res: any) => {
const id = res.results[0].objectId;
coll.deleteById(id, (err: any, res: any) => {
});
});
MBaasSDK.file(): MBaasFile
Get a file manager
Returns: MBaasDatabase
the file manager
The file manager has two methods below:
MBaasFile#uploadFile(filepath, callback)
通过指定的文件路径上传一个文件
Arguments
filepath
: string
文件路径callback
: CallbackFunction
error
: Error
如果请求有错误,返回该错误;否则为空res
: any
返回请求结果DEMO
const file = sdk.file();
file.uploadFile('./waiting.png', (err, res) => {
if (err) {
console.error(err);
return;
}
console.log(res);
});
Tips
建议配合相关平台的文件选择使用
MBaasFile#deleteFile(entryId, callback)
通过指定的 ID 删除文件
Arguments
entryId
: string
文件记录IDcallback
: CallbackFunction
error
: Error
如果请求有错误,返回该错误;否则为空res
: any
返回请求结果DEMO
const file = sdk.file();
file.deleteFile('1232324', (err, res) => {
if (err) {
console.error(err);
return;
}
console.log(res);
});
MBaasFile#getTempUrl(entryId, callback)
通过指定的 ID 获取临时访问 url,有效期半天
Arguemtns
entryId
: string
文件记录IDcallback
: CallbackFunction
error
: Error
如果请求有错误,返回该错误;否则为空res
: any
返回请求结果DEMO
const file = sdk.file();
file.getTempUrl('1232324', (err, res) => {
if (err) {
console.error(err);
return;
}
console.log(res.url);
});
FAQs
Mbaas Js SDK for Alipay
The npm package mbaas-js-sdk-alipay receives a total of 1 weekly downloads. As such, mbaas-js-sdk-alipay popularity was classified as not popular.
We found that mbaas-js-sdk-alipay demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.