小编Sau*_*rma的帖子

如何在LocalField中为$ lookup Mongodb将字符串转换为objectId

我想$lookup在mongodb中添加联接集合.我正在尝试如下

{
 $lookup:{
   from:"User",
   localField:"assignedId",
   foreignField:"_id",
   as:"dataa"}
}
Run Code Online (Sandbox Code Playgroud)

现在我有两个系列

用户包含objectid的用户喜欢 "_id" : ObjectId("56ab6663d69d2d1100c074db"),

任务,其中包含assignedIdstring "assignedId":"56ab6663d69d2d1100c074db"

现在,当在两个集合中应用$ lookup时它不起作用,因为Id不匹配.

为此,我用Google搜索并找到了一个包含的解决方案

{ $project: { assignedId: {$toObjectId: "$assignedId"} }}

但这个解决方案不适合我,它抛出一个错误:

assert: command failed: { "ok" : 0, "errmsg" : "invalid operator '$toObjectId'", "code" : 15999 } : aggregate failed
Run Code Online (Sandbox Code Playgroud)

请帮助我如何解决此问题.

谢谢

lookup join mongodb

15
推荐指数
1
解决办法
7417
查看次数

bcrypt-node抛出错误"没有给出回调函数"

我正在使用JWT身份验证创建用户注册.我正在使用bcrypt-node模块进行密码哈希和盐渍.

useraModel.js

var mongoose    =require('mongoose');
var Schema      =mongoose.Schema;
var bcrypt      =require('bcrypt-node');

var UserSchema=new Schema({
    name:{type:String, unique:true, required:true},
    password:{type:String, required:true}
});

    UserSchema.pre('save', function (next) {
        var user = this;
        if (this.isModified('password') || this.isNew) {
            bcrypt.genSalt(10, function (err, salt) {
                if (err) {
                    return next(err);
                }
                bcrypt.hash(user.password, salt, function (err, hash) {
                    if (err) {
                        return next(err);
                    }
                    user.password = hash;
                    next();
                });
            });
        } else {
            return next();
        }
    });

    UserSchema.methods.comparePassword = function (passw, cb) {
        bcrypt.compare(passw, this.password, function (err, isMatch) …
Run Code Online (Sandbox Code Playgroud)

node.js jwt passport.js

8
推荐指数
1
解决办法
5774
查看次数

Android 和 IOS 中的 Toast 警报 creat react native expo

我正在使用managedexpo react native创建一个 APP 。

并且想要实现 Toast 警报,只react-native提供Toastfor Androidnot for IOS

我在谷歌上搜索并找到了几个适用于 Android 和 ios 的模块,但它们需要在本机代码中进行一些配置更改。但正如我所说,我正在开发Managed世博应用程序。所以,我无权访问。

现在让我知道如何在此上实现 Toast?

谢谢。

toast react-native expo

5
推荐指数
2
解决办法
6264
查看次数

如何使用passport-jwt登录后解码令牌

我正在使用带有passport-jwt的登录用户ID编码令牌,如下所示:

var JwtStrategy   =require('passport-jwt').Strategy;
ExtractJwt = require('passport-jwt').ExtractJwt;
var User          =require('../app/models/usermodel');
var config        =require('../config/database');

module.exports=function(passport){
    var opts = {}; 
    opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
  opts.secretOrKey = config.secret;
  passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    User.findOne({id: jwt_payload.id}, function(err, user) {
          if (err) {
              return done(err, false);
          }
          if (user) {
              done(null, user);
          } else {
              done(null, false);
          }
      });
  }));
};
Run Code Online (Sandbox Code Playgroud)

和登录路由API:

apiRoutes.put('/login', function(req, res, next){
  User.findOne({email:req.body.email}, function(err, user){
    bcrypt.compare(req.body.password, user.password, function(err, result){
       if(result){
        var token=jwt.encode(user, config.secret);
        return res.json({token:token}); 
      }else{
        return res.json("Incorrect Email and Password")
      } …
Run Code Online (Sandbox Code Playgroud)

token node.js passport.js

3
推荐指数
1
解决办法
3520
查看次数

如何在 ejs 模板的内容中设置字符限制

我正在 EJS 模板中从 Mognodb 获取内容。我的描述字段包含超过 500 个字符,但我只想在我的视图中显示 50 个字符。

谁能告诉我怎么做。

ejs node.js

1
推荐指数
1
解决办法
8559
查看次数

将嵌套JSON转换为Flat JSON

我正在使用javascript,我已经嵌套了jong对象来自mongodb.

"abc": [
    {
      "a": "01AABCE2207R1Z5",
      "b": "Y",
      "c": [
        {
          "ca": "A",
          "cb": "AflJufPlFStqKBZ",
          "cc": "S008400"
         },
         {
          "cx": "A",
          "cy": "AflJufPlFStqKBZ",
          "cz": "S008400"
         }
        ]
     },

      {
      "a": "01AABCE2207R1Z5",
      "b": "Y",
      "c": [
        {
          "ca": "A",
          "cb": "AflJufPlFStqKBZ",
          "cc": "S008400"
         },
         {
          "cx": "A",
          "cy": "AflJufPlFStqKBZ",
          "cz": "S008400"
         }
        ]
     }
    ]
Run Code Online (Sandbox Code Playgroud)

上面的模式有固定的字段,架构中不会有任何变化.

现在我想把它作为平面json数组对象,结果应该是这样的.如果c有多个JSON对象的,应该创建一个新的JSON对象以相同的a,b

 [{
     "a": "01AABCE2207R1Z5",
     "b": "Y", 
     "ca": "A",
     "cb": "AflJufPlFStqKBZ",
     "cc": "S008400" 
    },
{
     "a": "01AABCE2207R1Z5",
     "b": "Y",  
     "cx": …
Run Code Online (Sandbox Code Playgroud)

javascript json nested flatten

0
推荐指数
1
解决办法
6170
查看次数

标签 统计

node.js ×3

passport.js ×2

ejs ×1

expo ×1

flatten ×1

javascript ×1

join ×1

json ×1

jwt ×1

lookup ×1

mongodb ×1

nested ×1

react-native ×1

toast ×1

token ×1