当我使用 find() 命令时,我在我的节点应用程序中使用 async/await 但是否可以对聚合执行相同的操作?
就像是
const data = await Model.aggregate([
{
$match: {
"id": id
}
}
])
Run Code Online (Sandbox Code Playgroud) 我试图在MongoDB中存储密码和盐,我不确定应该使用哪种数据类型.当我使用字符串时,加密的密码似乎正确存储,但生成的生成的盐new Buffer(crypto.randomBytes(16).toString('base64'), 'base64');似乎具有无法识别的字符.例如,我有一个存储为 y_ 6j( l~Z} 0 \"的盐,我不认为这是正确的.
问题是它存储为字符串吗?
当我的应用程序启动时,会创建一个对象,该对象在整个应用程序中的多个文件中使用。在我的 app.js 文件中,我需要几个包含我的路由的文件。这些路由需要访问在 app.js 中创建的对象,所以我试图将它传递给这些文件中的每一个。下面是其中一个文件的示例。
测试.js
const express = require('express');
const router = express.Router();
router.use('/api', router);
router.post('/testRoute', (req, res, next) => {
if(globalVariable.abc) { //globalVariable is the variable created in app.js
//do some logic
}
res.json({
message: "Test Route Success"
})
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
应用程序.js
const assessmentRoutes = require('./routes/test');
app.use(assessmentRoutes);
Run Code Online (Sandbox Code Playgroud)
我试图让变量传入的一种方法是将 test.js 中的路由包装在一个函数中,该函数采用这样的变量。
module.exports = function(globalVariable) {
router.post('/testRoute', (req, res, next) => {
if(globalVariable.abc) { //globalVariable is the variable created in app.js
//do some logic
}
res.json({
message: "Test …Run Code Online (Sandbox Code Playgroud) 我在 mongodb 聚合中有一个匹配表达式。匹配中包含 3 个字段,但它们并不总是包含数据。我只想在字段不为空时将字段包含在匹配中。
如果所有字段都有数据,则匹配的样子,但例如,如果用于的数组为studentGradeLevels空,那么我不想包含它,或者我希望查询仍然返回数据而忽略空参数。
$match: {
"school._id": "7011",
"studentGradeLevels": { $in: ["09", "10", "11", "12"] },
"contentArea": {
$in: [
"English 1"
]
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法动态构建匹配,以便我只包含我想要的字段(如果它们为空或不为空),或者在查询中执行某些操作,以便忽略空参数。