我正在编写一个函数,该函数需要从给定的字符串中返回一个“随机”数字,起始于:
function hashNumberBetween(str, start, end){
....
return num;
}
// same string and same length return same number
hashNumberBetween('getjnigejgr', 0, 10); // 4
hashNumberBetween('getjnigejgr', 0, 10); // 4
// but, same string and different length return different number
hashNumberBetween('getjnigejgr', 0, 32); // 15
hashNumberBetween('jukojmnktgo', 0, 10); // 6
Run Code Online (Sandbox Code Playgroud)
给定相同的字符串,实现相同组合的正确方法是什么?我认为这是某种哈希函数。我可以看任何在线资源吗?听起来可能是一个非常简单的问题,但我不知道如何搜索。
我有一个user.js文件,其中包含我所有的mongoose模式和方法,大致如下:
var userSchema = mongoose.Schema({
name: { type: String, required: true, trim: true },
surname: { type: String, required: true },
});
var User = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)
现在,最好公开模拟数据的函数吗?像这样:
exports.addUser = function(data, next){
user = new User(data);
user.save(next);
};
exports.getAll = function(next){
var query = User.find();
query.exec(next);
};
Run Code Online (Sandbox Code Playgroud)
或者只露出User要在别处使用的对象?
module.exports = User; //or
exports.User = User;
Run Code Online (Sandbox Code Playgroud)
我也面临着从第二个解决方案中得到的问题,假设我想向我添加一个汽车列表userSchema,并且汽车架构在另一个文件car.js中定义,那么这意味着我将不得不carSchema为我的用户公开.js文件,对吗?这意味着我实际上取消了上面提供的第二个解决方案,那么,做这种事情的正确方法是什么?
我的 Express 应用程序中有以下猫鼬模型:
//dog.js
var mongoose = require("mongoose");
var dogSchema = (exports.dogSchema = mongoose.Schema({
name: { type: String, required: true },
}));
Run Code Online (Sandbox Code Playgroud)
然后我导入dog.js到我的user.js
//user.js
var mongoose = require("mongoose");
var dog = require("./dog");
var userSchema = mongoose.Schema({
user: { type: String, required: true },
pass: { type: String, required: true },
dogs: [dog.dogSchema],
});
Run Code Online (Sandbox Code Playgroud)
现在,从我的路线中,我正在创建一个像这样的新用户:
var user = require("../models/user");
var dog = require("../models/dog");
dog = new dog.Dog(dogData);
user = new user.User(data); //this will of course contain also dogData …Run Code Online (Sandbox Code Playgroud)