我想$lookup在mongodb中添加联接集合.我正在尝试如下
{
$lookup:{
from:"User",
localField:"assignedId",
foreignField:"_id",
as:"dataa"}
}
Run Code Online (Sandbox Code Playgroud)
现在我有两个系列
用户包含objectid的用户喜欢 "_id" : ObjectId("56ab6663d69d2d1100c074db"),
和 任务,其中包含assignedId为string "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)
请帮助我如何解决此问题.
谢谢
我正在使用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) 我正在使用managedexpo react native创建一个 APP 。
并且想要实现 Toast 警报,只react-native提供Toastfor Androidnot for IOS。
我在谷歌上搜索并找到了几个适用于 Android 和 ios 的模块,但它们需要在本机代码中进行一些配置更改。但正如我所说,我正在开发Managed世博应用程序。所以,我无权访问。
现在让我知道如何在此上实现 Toast?
谢谢。
我正在使用带有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) 我正在 EJS 模板中从 Mognodb 获取内容。我的描述字段包含超过 500 个字符,但我只想在我的视图中显示 50 个字符。
谁能告诉我怎么做。
我正在使用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) 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